介于目前在学习SpringCloud,需要简单了解微服务系统系统。
由于微服务系统属于分布式系统,在此之前,我们先了解一下集中式系统与分布式系统。
集中式系统
集中式系统包含一个大型的中央处理系统,中央处理系统是台高性能,可扩从的急速全能机,所有数据,运算,以及任务都在其上面完成。通过终端连接中央处理计算机,进行输入与输出。
优点:方便数据备份;数据安全,一般不需要外接设备
缺点:终端较多时,响应较慢;用户个性化需求过多时,配置繁琐
分布式系统
分布式系统是由多台计算机组成的。每台计算机都是一个独立的系统,拥有数据库,终端,中央处理器等,在物理上分散,在逻辑上属于同一系统。
特点:
- 高度的可靠性:数据存放在不同的主机上,系统中存在数据冗余。当一台机器故障,可以使用另外一台机器备份。
- 每台主机都可缓存本地常用数据,减轻服务器的压力,减少网络流量。服务器也可以人为分配与优化,克服中央处理器资源紧张问题。
- 满足不同需求:用户可以自己的主机上面安装不同的系统,软件,进行个性化的配置与使用。
利弊分析:
- 分布式系统中,可以按业务拆分成多个应用,在按一定标准进行分层,如应用结构,访问入口等。
- 数据库可以按业务需求建立多个实例,也可以对单表进行分库分表。
- 增加分布式、搜索、文件、缓存等多个中间件。
总结
分布式系统解决了集中式系统不便扩展的弊端,但同时也带了一些弊端,分布式事务、分布式锁、数据统一等难题,进而使系统复杂化,运维与管理难度大等。
了解了集中式系统与分布式系统之后,大致有了分布式系统的一个概念。
微服务系统
Martin Fowler提出:
微服务架构就是将单一程序开发成一个微服务,每个微服务运行在自己的进程中,并使用轻量级的机制通信,通常是HTTP RESTFUL API。这些服务围绕业务能力来划分,并通过自动化部署机制来独立部署。这些服务可以使用不同的编程语言,不同数据库,以保证最低限度的集中式管理。
微服务即将一个单体结构应用按某一标准划分为能独立运行的程序即服务。服务之间通过HTTP协议通信,来完成一个复杂业务需求。
结合以上的介绍,在此再次了解了一下单体架构。
单体架构
单体架构即将所有的业务场景的表现层,业务逻辑层,数据访问层放在一个工程中,最后通过打包,部署在一台服务器上。
访问量小时,性价比高,开发速度快,成本低。
由于并发能力有限,在访问量大与业务逻辑复杂之后,代码的可读性与可维护性逐渐低下。单体应用集群部署与服务器分离,但依旧没改变单体架构本质,因此提出微服务架构。
与微服务相关的技术
- 消息队列:RoocketMQ,Kafka等
- 自动化部署:Jenkins
- 服务集中化管理:Eureka,ZooKeeper等
微服务优势分析
l 复杂的业务拆分为多个小的业务,每个业务拆分成一个服务。
l 微服务采用的是分布式系统,业务之间完全解耦,具有极强的横向与纵向拓展能力。随着业务难度的上升,可以对业务继续进行拆分,面对高并发,可以采用集群部署。
l 服务独立,不存在相互影响,同时可以采用不同的编程语言与数据库。