目标:
了解微服务、微服务架构以及架构演进过程
学习步骤:
1、讲微服务前先要明白什么是单体架构2、 什么是微服务?
3、微服务架构又是什么?
4、微服务的优缺点分析
5、微服务技术栈有哪些?
6、为什么要选择SpringCloud作为微服务架构?
一、先聊单体架构
单体架构,就是一个工程对应一个归档包,也就是war包,并且这个war包 包含了该工程的所有功能。
这种就是单体应用,也就是单体架构。
再谈得具体一点就是 比如:我们之前的SMBMS系统,它可以打成一个war包放在tomcat中跑,它一个war包中聚集了所有资源(JSP,CSS,JS)和功能(订单模块,供应商模块,用户模块等等)。
1.1 单体架构优缺点对比
优点:
1、架构目录简单清楚。
2、开发测试部署也简单
缺点:
1、业务越多,代码越复杂。
2、系统业务越来越多,一次性部署的速度就会变慢
3、系统扩展成本高,我们无法对单个功能模块进行扩展
二、什么是微服务?
微 => 小 => 功能单一的服务
微服务强调的是 服务的大小 和 对外提供的单一功能,一个模块就做一件事情!
三、什么是微服务架构
微服务架构的 核心就是 将单一的应用程序划分成一组小的服务 , 也就是模块化
(根据业务模块 划分成一个个具体的服务,每一个服务提供特定的功能,一个服务只做一件事)。
而每个服务运行在自己的进程内,服务之间相互协调,互相配置。
每个服务围绕着具体的业务进行构建,并独立部署到生产环境中。
四、微服务的优缺点分析
4-1、微服务优点:
- 单一职责原则,一个服务完成一项业务功能
- 开发简单,效率提高,松耦合,无论在哪个阶段,每个服务都是独立的,不会相互影响
- 每个服务可以使用不同的语言进行开发
- 易于第三方系统集成
- 微服务易于修改和维护
- 微服务中只是业务逻辑代码,没有前端的页面样式等等
- 每个服务都有自己的存储能力,有自己的数据库,也可以有统一的数据库
4-2、微服务缺点:
- 开发人员要处理分布式系统的复杂性
- 多服务运维难度,随着服务的增加,运维的压力也变大
- 系统部署依赖
- 服务间的通信成本变高
- 数据一致性
- 系统集成测试变复杂
- 性能监控难度增大
五、微服务技术栈有哪些?
| 微服务条目 | 使用技术 |
|---|---|
| 服务开发 | SpringBoot,Spring,SpringMVC |
| 服务配置与管理 | Netflix公司的Archaius、阿里的Diamond等等 |
| 服务注册与发现 | Eureka、Consul、Zookeeper等等 |
| 服务调用 | Rest、PRC、gRPC |
| 服务熔断器 | Hystrix、Envoy等等 |
| 负载均衡 | Ribbon、Niginx等等 |
| 服务接口调用 | Feign等等 |
| 消息队列 | Kafka、RabbitMQ、ActiveMQ等等 |
| 服务配置中心管理 | SpringCloudConfig、Chef等等 |
| 全链路追踪 | Zipkin、Brave、Dapper等等 |
| 服务部署 | Docker、OpenStack、Kubernetes等等 |
| 数据流操作开发包 | SpringCloud Stream |
| 事件消息总线 | SpringCloud Bus |
六、为什么要选择SpringCloud作为微服务架构
6-1、选型依据
- 整体解决方案和框架成熟度
- 社区热度
- 可维护性
当前主流的微服务架构有哪些?
:SpringCloud、ServiceComb、ZeroC ICE、Motan、Thrift
- 阿里巴巴:dubbo+HFS
- 新浪:Montan
- 京东:JSF
-
Spring Cloud是一系列框架的有序集合。
Spring Cloud 利用 Spring Boot 特性整合了开源行业中优秀的组件,整体对外提供了一套在微服务架构中服务治理的解决方案。 -
Apache ServiceComb 是第一个Apache微服务项目, 是一个开源微服务解决方案,实现对微服务应用的高效运维管理。提供一站式开源微服务解决方案并支持多语言。
-
ZeroC IceGrid 是面向对象的分布式系统中间件。基于RPC框架具有良好的性能与分布式能力。
-
Motan 是开源的 RPC 框架,只支持 Java 语言实现,需要在 Client 端(服务消费者)和 Server 端(服务提供者)引入 SDK。
-
Thrift 是一种轻量级的跨语言 RPC 通信方案,支持多达 25 种编程语言。Thrift有一套自己的接口定义语言 IDL。
3383

被折叠的 条评论
为什么被折叠?



