一、什么是Dubbo
二、Java应用架构发展历史
1. 单体架构
整体应用打包为一个jar包在单体服务器中运行。
2. 水平/垂直扩展架构
- 水平扩展:将应用部署在多个节点构成集群,访问时通过负载均衡访问。提升了并发能力,但是仍然没有解决上述问题。
- 垂直扩展:将应用按照子系统划分,每个子系统独立部署,子系统之间共享数据库等存储资源。一定程度上解决了子系统级别的问题,但是粒度仍然不够细,没有解决模块级别的问题。
3. 微服务架构
微服务架构就是将所有服务模块都拆分出来单独开发部署,模块之间通过RPC通信
优势
- 可针对模块的热度精准弹性扩容或缩容,扩展性好。
- 拆分模块使得模块之间耦合度降低,不会因为一个模块出问题导致整个应用都无法使用。
- 维护成本低,在发布某个模块时只需要发布这个模块就行了,不需要发布整个应用系统。
- 开发技术栈更灵活,不同的模块可以采用不同的编程语言实现,由RPC框架进行服务桥接。
微服务代表框架:Spring Cloud,DNS(Dubbo、Nacos、Sentinel)
微服务架构框架服务治理核心要点:
- 注册中心:用于管理所有服务模块的地址并监测服务模块的状态,服务模块在启动时会将自己的服务地址注册到注册中心,其它消费者再从注册中心查询。
- 负载均衡:某个服务模块使用集群部署,那么需要负载均衡机制来访问集群节点以平衡服务压力
- 容错:当访问一个服务地址出错时,可尝试切换到其他服务节点访问。
- 配置中心:为服务集群节点提供统一的配置,需要修改配置时只需要在配置中心中修改,不需要一个个节点去改。
- 限流:可对服务请求进行限流,防止请求堆积造成集群服务崩溃。
参考:https://www.bilibili.com/video/BV1Uk4y1g7CW