了解微服务与SOA
一、微服务特点(整理自知乎)
- 不同的子系统采用自己的架构,各个服务运行自己的Web容器中。当需要增加计算能力的时候,只需要增加这个子系统或服务的实例就好了,当升级的时候,可以不影响别的子系统。
- 微服务与SOA相比,更强调分布式系统的特性,比如横向伸缩性,服务发现,负载均衡,故障转移,高可用。
- 互联网开发对服务治理提出了更多的要求,比如多版本,比如灰度升级,比如服务降级,比如分布式跟踪,这些都是在SOA实践中重视不够的。
- Docker容器为微服务提供了更便利的条件,每个服务可以通过SpringBoot技术跑在自己的进程中。可能在几十台计算机中运行成千上万个Docker容器,每个容器都运行着服务的一个实例。
二、分布式Java应用
1. 分布式带来的挑战:
- 服务多级调用的延迟
- 调试、bug跟踪困难
- 安全监测需要有统一平台
- 高可用和可伸缩
- 多版本和依赖管理