知乎专栏 |
工作中你是否因环境的差异带来困扰,下面我总结了一些因为环境差异给开发者造成的困扰。
环境差异带来的困扰:
问题根源出在哪里?
搜索引擎、Ctrl+C、Ctrl+V 是程序员三件法宝,几乎占用了程序员的80%的工作。
但是我们常常会遇到一个问题,就是在网上找到的例子,复制到自己的开发环境,无法运行,通常有一下几个因素。
工作中我就遇到过这样的问题,我接手了一个项目,生产环境每日救火,性能十分差,经过分析是配置没有生效。开发同事到网上找到一篇配置文章,直接照搬网上配置,也没有去做验证,那个配置是 springboot 1.x, 在 2.x 已经废弃,所以配置是不生效的。
上面的案例在很多团队中都会发生。
办公电脑跟服务器的差异是什么?
所谓服务器,并不是服务器性能比台式机高,很多服务器配置非常低,例如物联网用的。服务器更多是指她能7*24小时稳定运行,出现死机频率比较台式电脑低,为了能让服务器7*24小时工作,在硬件设计方面更考究,使用材料,设计方案,都是为了满足长时间可靠运行,所以服务器的成本会增加。
而台式机(办公电脑)通常每天工作时常不会超过16小时,也就是会关机一次,第二天在开机,任何问题重启都能解决(万能重启),重启可以掩盖很多问题。
我们现在使用的办公电脑配置都很高,轮核心数量,内存容量,并不比服务器差,性能更是秒杀云主机。台式机还有一个优势,基本都会配置显卡。
为什么在本地电脑开发完成的功能,上到测试环境就运行不了?
本地电脑 VS 测试环境
假如开发了一个下载 excle 数据的功能,在本地电脑上测试,从查询数据库,数据组装,生成xls文件,然后下载,几乎是鼠标一点就完成。此时发布到测试环境,你发现这个功能根本不能用,需要优化。
因为你一个人在用一台 8核心 16G 256SSD硬盘的电脑,并且只启动了一个服务;而测试环境上运行几十个服务,同时做了资源配额,分配的资源仅有4核心,4G,硬盘还是机械的。
本地开发环境只需在应用上配置超时时间即可,我们是直接访问应用的。
测试环境就可能涉及的网关,负载均衡等等多处设置。那么在集群环境中都会涉及那些超时时间的配置呢?
经常涉及的超时配置:
生产环境只会更复杂。
你从公司行政领了一台电脑,搬到工位上装好开机,然后一顿操作猛如虎就把开发环境搭建起来。
然后就开始写代码了,开发、联调、测试一切顺利,冒烟通过之后,准备发到测试环境做集成测试/压力测试/性能测试……
注册中心都有那些问题困扰我们?
开发中遇到的问题:
生产中遇到的问题:
当微服务节点注册导注册中心后,通过心跳来维持节点的存活。
负载均衡节点分配有多种算法,例如轮询、随机、源IP地址、HASH、Cookie、加权等等……
其中又些算法,例如轮询、随机,它是不保持与请求客户端之间的关系,当你下一次请求,节点就会发生变化。这样就你不知道那个节点执行了你的请求。