微服务的发展
1.1单体架构到分布式架构
1、单体架构
通常来说,如果一个jar包或者war包里面包含一个应用的所有功能,则称这种架构为单体架构。
2、优点和挑战
优点:架构简单,能够快速开发和上线。对于用户量较少的情景,这种架构足以支撑需求。
挑战:用户量增大之后,访问量增大,服务器负载变高。不仅如此,用户的需求会变多,导致业务场景复杂,如果要新增模块,需要对整个项目重新部署和测试,非常复杂。
解决办法:横向增加服务器&按照业务垂直领域进行拆分,减少业务耦合度。
3、SOA
SOA是面向服务的架构,核心目标是把一些通用的、会被多个上层服务调用的共享业务提取成独立的基础服务,这些被提取出来的基础服务比较独立且可重用,所以在SOA中服务是最核心的抽象手段,业务会被划分为细粒度的服务和流程。
4、微服务架构
业务系统经过服务化改造之后,原本共享的业务被分成可复用的服务。那么将拆开的服务继续做拆分独立部署,就是微服务的思想。微服务架构针对可重用的业务服务进行进一步优化,换而言之,SOA就是多个微服务的集合。
优点:
- 复杂度可控:一个服务只需要关注一个特定的业务,体积小、复杂度低、开发维护简单
- 技术选型灵活:每个微服务由不同的团队负责,可以自由选择更加合适的技术栈
- 独立部署:每个微服务都单独部署,某个服务变动时不会影响其他的服务,高效
- 容错性:某一个服务出错时,可以把错误隔离在这个服务
1.2 SpringCloud
1、概念
在微服务一体化的解决方案出现之前,各个公司在实现服务化的过程中需要对各种开源技术进行横向的对比整合,还要针对公司的业务特性对这些开源的组件进行包装和优化,直到SpringCloud出现。
简单来说,SpringCloud提供了一些可以让开发者快速构建微服务的工具,比如:配置管理、服务发现、智能路由等,这些服务可以在任何分布式环境下很好的工作。SpringCloud只是把一些优秀的解决微服务架构中常见问题的开源框架基于Spring Cloud进行了整合,再通过SpringBoot进行再次封装屏蔽复杂的配置,让开发者开箱即用。
2、Spring Cloud Netflix
主要为微服务架构下的服务治理提供解决方案。主要包括下述组件:
- Eureka:服务注册与发现
- Zuul:服务网关
- Ribbon:负载均衡
- Feign:远程服务的客户端代理
- Hystrix:断路器,提供服务熔断和限流功能
- Hystrix Dashboard:监控面板
- Turbine:将各个服务上的Hystrix监控信息进行统一聚合
3、Spring Cloud Alibaba
主要功能组件如下:
- Sentinel:流量控制和服务降级
- Nacos:服务注册和发现中心
- Nacos:分布式配置中心
- RocketMQ:消息驱动
- Seate:分布式事务
- Dubbo:RPC通信
- OSS:阿里云对象存储
4、Alibaba优势
-
Alibaba的组件在未加入Spring Cloud生态之前就已经被广泛使用,方便用户迁移和整合
-
Alibaba的开源组件在服务治理和处理高并发的能力经过国内环境的考验,更加适用于国内场景
-
Alibaba在功能上完全覆盖了Spring Cloud Netflix,而且提供了更加稳定和成熟的实现
1.3 Spring Boot
Springboot是Springcloud的核心,在此不过多介绍,想要了解的可以自行查阅资料。
总结
本篇内容主要从微服务的由来到当下所使用的框架做一个介绍,后续会针对其中的Nacos、Dubbo、RocketMQ、Sentinel分别做讲解。