Apache Dubbo是一款高性能、轻量级的开源服务框架。
1.单体架构
比如现在有一个学生成绩管理平台,里面有学生管理,教师管理,成绩管理。然后将这个系统打包上线,部署在一个2核4G的服务器上,但是现在用户对成绩管理模块这个访问量太大了,系统都点顶不住,要升级,可以考虑垂直升级和水平扩展,垂直升级就是提高服务器的性能,比如变为4核8G,但是提升还是太小;水平扩展,就是再将系统部署到另一台服务器上,但是还是不方便。
总之单体架构存在性能提升有限、不好维护,因为所有的模块都在一起、某一个模块出现问题,影响整个系统的使用等问题。
2.垂直应用架构
那就拆,将系统进行拆分,比如拆为学生系统、教师系统、成绩系统三个服务,但是在整个部署过程中,公共的部分是多余部署的,比如他们公用了一个service层,等待对公共的部分要进行修改,就又会比较麻烦,下线3个服务,改三份,又重新上线。
3.分布式应用架构
那就再把服务内部公用的模块再抽取出来,部署成一个独立的服务,那服务之间相互调用,但是又会产生出新的问题,这个公共的服务如果水平扩展了多份,其他的服务要调用这个公共服务,这么多的公共服务,如何被发现?如何被治理?服务之间如何高效的通信调用?
4.微服务架构阶段
微服务架构阶段主要解决以下几个问题:
-
服务的注册与发现:这个多的服务如何注册,又如何被发现呢
-
服务之间的高效调用:使用rpc或者http进行通信
-
服务治理:服务权重、负载均衡、服务熔断、限流等等一系列的治理方案
服务提供者将服务注册到注册中心,服务消费者会订阅这些服务信息,也称为服务发现,当消费者要调用设备服务时,注册中心会发送服务信息给消费者,然后消费者就可以根据自身的负载均衡策略以及服务的权重分配来通过网络通信的方式去调用对应的服务了。