一、服务架构分类:

   1、服务架构大致分为两类,分别为单体架构和分布式架构

        (1)单体架构:应用程序无论如何分层,都是一个解决方案,或者说都是一个项目。简单的理解就是将所有的功能集中在一个项目中开发,打成一个包部署。

          优点:架构简单;部署成本低;集中管理;没有分布式的损耗,都是系统进程内的通信等。

          缺点:不好维护,耦合度较高;集群负担大;无法应付高并发和搞数据量的场景;迭代更新速度慢等。

          适用于一些小型项目,例如:学生系统

        (2)分布式架构:应用程序根据业务功能对系统进行不同粒度大小的拆分,每个业务模块都将会作为一个独立的项目开发,称为一个服务。

          优点:降低了服务的耦合度;有利于系统服务的升级拓展;隔离性强;分布式管理;模块代码具有较高的复用性;等。

          缺点:运维、监控、部署难度提高;架构复杂;网络传输分布式损耗成本;不适合高并发和大数据的环境等。

          适用于一些大型项目,例如:京东、淘宝

二、微服务架构

        微服务是一种经过良好架构设计的分布式架构方案,微服务架构有以下特征:

①单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务功能,做到单一职责,避免重复开发。

②面向服务:微服务对外暴露业务接口。

③自治:团队独立、技术独立、数据独立(独立的数据库)、部署独立。

④隔离性强:服务调用做好隔离、容错、降级、避免出现级联问题。

三、微服务结构中的构成元素

   服务集群:将一个服务拆分成不同的模块组件,而每个拆分的模块组件都要遵循单一职责的原则以及面向服务,对外暴露接口。

   注册中心:记录微服务集群中每一个服务的ip、端口、以及功能等。负责拉取或注册服务信息。

   配置中心:可以统一的管理整个服务群里的配置,可以实现配置的热更新。

   服务网关:对访问发起者的身份的校验,并且把用户的请求路由(负载均衡)到具体的服务上。

   分布式缓存:为了应付高并发的数据访问,将用户需求首先放置于分布式缓存中,未命中之后再去数据库中查询。

   分布式搜索:是将数据分散存储在多台独立的设备上。利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息。

   消息队列:是一种先进先出的队列型数据结构,实际上是系统内核中的一个内部链表。通过消息队列实现事件总线,基于事件和状态构建微服务和工作队列的调度与执行机制。

   分布式日志服务:统计整个集群中所有服务的运行日志,统一的进行存储和分析等。

   系统监控链路追踪:实时监控和追踪每个服务节点的运行状态、CPU的负载、内存的占用等。

三、微服务技术的对比

微服务技术对比

Dubbo技术

SpringCloud

SpringCloudAlibaba

注册中心

zookeeper、Redis

Eureka、Consul

Nacos、Eureka

服务远程调用

Dubbo协议

Feign(http协议)

Dubbo、Feign

配置中心


SpringCloudConfig

SpringCloudConfig、Nacos

服务网关


SpringCloudGateway、Zuul

SpringCloudGateway、Zuul

服务监控和保护

dubbo-admin、功能较弱

Hystrix

Sentinel

SpringCloudAlibaba相当于整合兼容了Dubbo和SpringCloud两种架构。

阿里巴巴的Nacos的强大之处在于即支持Dubbo的远程调用,同样也支持Feign的远程调用。

四种常见微服务架构的企业需求:

①:SpringCloud+Feign

使用SpringCloud技术栈;服务接口采用Restful风格;服务调用采用Feign方式。

②:SpringCloudAlibaba+Feign

使用SpringCloudAlibaba技术栈;服务接口采用Restful风格;服务调用采用Feign方式。

③:SpringCloudAlibaba+Dubbo

使用SpringCloudAlibaba技术栈;服务接口采用Dubbo协议标准;服务调用采用Dubbo方式。

④:Dubbo原始模式(较为少见)

基于Dubbo的技术体系;服务接口采用Dubbo协议标准;服务调用采用Dubbo方式。