微服务是为了解决什么问题呢?
1. 首先是复用代码和业务。类似于 jar 包,但是又比 jar 包更独立
同样的 git 子仓库,也是实现复用的一种办法。确实不包含运维规则,但是很方便参与修改代码。
2. 微服务提供运维脚本的最小单位。
git 子仓库,可以在内部包含各种脚本,而不像 jar 包那样只有纯粹的 .class. 所以可以由开发小组同时提供 docker 脚本和 gradle 脚本。比如 sql 的连接参数、nginx 的 lua 脚本,负载均衡的相关配置。都可以放在 git 仓库里面的单独目录中,供最顶层业务逻辑调用。
-------------
对于非 java 社区,微服务还提供异构技术栈(go, java, js),但这个对 java 社区没用,我没看到 java 社区真的用好几种语言编写微服务的。高可用性(网关), 负载均衡等等,其实并不是微服务的本质特征,使用其它技术也很容易实现。
所以我的核心观点就是微服务最核心就是“复用”,无非是 jar 包的升级版,没什么了不起的。有千百种办法来做这个事情。微服务通常是最差的那种。
-------------
微服务绝对是云厂商的一种阴谋。这个技术对大规模的项目是很有用的。但对于中小型项目,它显著地拖慢了处理速度,增大了开发难度和运行开销。是一种很糟糕的技术。
微服务很适合程序员作为简历技能,类似于现在 js 程序员的“函数式编程”,很酷炫,会了以后薪资翻倍。在大厂求职的程序员一定要学一学,但如果是创业公司,要慎用这个技能。
【 在 Mikov (Mikov Chain) 的大作中提到: 】
: 也许我没看懂... 我们说的不是一件事?
--
修改:hgoldfish FROM 110.81.42.*
FROM 110.81.42.*