微服务这几年应该是我听过最多的,很多公司的架构现在都在往这个方面迁移,包括很多的互联网公司,以及其它行业的软件公司。至于原因吗,很多人都出自己的理解,从业务需求上讲,可以scale-out,满足业务增长的需求,另外从软件开发者的角度,服务化的架构确实是降低了各个软件模块的偶合,更方便软件的开发,部署,测试。
但这里为什么把微服务跟负载均衡服务器联系在一起呢?
首先看一下当软件的架构从传统的单体应用切换到微服务架构后对我们开发软件的工程师的影响。
微服务
在以前单体应用开发的时候,模块之间的关联都是通过简单的方法调用,比如,如果moduleA里面有个ClassA,它想要调用另外一个ModuleB里面的ClassB来完全某个功能,我们通常会这样写:
ClassA {
public void methodA() {
...
new ClassB().methodB()
...
}
}
这样ClassA就跟ClassB产生了关联,偶合。
再来看一下用微服务架构后,我们会怎么来完成上面同样的功能。
ModuleB 里面的ClassB可能会提供一个Restful 的API来完成原来相同的功能:/moduleb/methodb, 这样改造之后,ClassA就需要这样子来调用原来的功能:
ClassA {