网站制作公司南宁有网站模板怎么建站
文章目录
- 认识微服务
 - 单体架构
 - 分布式架构
 - 需要考虑的问题
 
- 微服务
 - 微服务的具体架构
 - 微服务技术对比
 - 企业中的技术需求
 
- 总结
 
- 服务拆分注意事项
 
认识微服务
随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢?
- 了解微服务架构的优缺点
 
单体架构
单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署。
 
单体架构的优缺点如下:
优点:
- 架构简单
 - 部署成本低
 
缺点:
- 耦合度高(维护困难、升级困难)
 
分布式架构
分布式架构:根据业务功能对系统做拆分,每个业务功能模块作为独立项目开发,称为一个服务。
 
分布式架构的优缺点:
优点:
- 降低服务耦合
 - 有利于服务升级和拓展
 
缺点:
- 服务调用关系错综复杂
 
需要考虑的问题
 
- 服务拆分的粒度如何界定?
 - 服务集群地址如何维护?
 - 服务之间如何调用?
 - 服务健康状态如何感知?
 
集群、微服务、分布式
①. 微服务:拒绝大型单体应用,基于业务对微服务进行拆分,各个服务独立部署运行
- (微服务与分布式的细微差别是,微服务的应用不一定是分散在多个服务器上,它也可以是同一个服务器)
 ②. 集群、分布式、节点
- 集群:几台服务集中在一起,实现同一业务
 
- 集群可以是我是一个应用。这一个应用扛不住了,把这个应用部署在不同的机器上,对外提供的是一个服务
 - 分布式:将一套系统拆分成不同子系统部署在不同服务器上(这叫分布式)
 - 节点:集群中的一个服务器
 
- 注意:集群(多个人在一起作同样的事情) 分布式(多个人在一起作不同的事)
 - 分布式中的每一个节点都可以做集群,而集群不一定是分布式的
 - 集群是个物理形态,分布式是工作方式
 举例:
- 小饭店原来只有一个厨师,切菜洗菜备料炒菜全干
 - 后来客人多了,厨房一个厨师忙不过来,又请了个厨师,两个厨师都能炒一样的菜,两个厨师的关系是集群
 - 为了让厨师专心炒菜,把菜做到极致,再请了个配菜师负责切菜,备菜,备料 … 厨师和配菜师的关系是分布式
 - 一个配菜师也忙不过来了,又请了个配菜师,两个配菜师关系是集群。
 - 一个配菜师因故请假了,但是其余的配菜师还是该啥就干啥,只是没请假的配菜师任务均匀的加量了,但他们的任务和职责是不变的,这是集群
 
微服务
微服务的架构特征:
- 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责
 - 自治:团队独立、技术独立、数据独立,独立部署和交付
 - 面向服务:服务提供统一标准的接口,与语言和技术无关
 - 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题
 
微服务的上述特性其实是在给分布式架构制定一个标准,进一步降低服务之间的耦合度,提供服务的独立性和灵活性。做到高内聚,低耦合。因此,可以认为微服务是一种经过良好架构设计的分布式架构方案 。、
微服务的具体架构
 
但方案该怎么落地?选用什么样的技术栈?全球的互联网公司都在积极尝试自己的微服务落地方案。
其中在Java领域最引人注目的就是SpringCloud提供的方案了。
微服务技术对比

企业中的技术需求
 
学习的使用的版本
 
- SpringBoot版本是2.3.4.RELEASE
 - SpringCloud版本是Hoxton.SR8
 - spring-cloud-alibaba-dependencies是2.2.2.RELEASE
 
<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><spring-cloud.version>Hoxton.SR8</spring-cloud.version><mysql.version>5.1.47</mysql.version><mybatis.version>2.1.1</mybatis.version>
</properties>
 
总结
-  
单体架构:简单方便,高度耦合,扩展性差,适合小型项目。例如:学生管理系统
 -  
分布式架构:松耦合,扩展性好,但架构复杂,难度大。适合大型互联网项目,例如:京东、淘宝
 -  
微服务:一种良好的分布式架构方案
-  
①优点:拆分粒度更小、服务更独立、耦合度更低
 -  
②缺点:架构非常复杂,运维、监控、部署难度提高
 
 -  
 
SpringCloud是微服务架构的一站式解决方案,集成了各种优秀微服务功能组件
服务拆分注意事项
- 不同微服务,不要重复开发相同业务
 - 微服务数据独立,不要访问其它微服务的数据库
 - 微服务可以将自己的业务暴露为接口,供其它微服务调用
 

