| 
                         dubbo服务治理优势 
    - 注册中心只负责注册查找,不负责请求转发,压力小
 
    - 注册中心宕机影响消费者,消费者本地缓存服务地址列表
 
    - 注册中心对等集群,宕掉一台自动切换到另外 一台
 
    - 服务提供者无状态,可动态部署,注册中心负责推送
 
    - 统计无压力,本地内存中累计次数,每分钟发送注册中心
 
    - 消费者调用服务者,自动软负载均衡
 
    - 通过服务中心可追踪依赖关系
 
    - 监控中心为扩容和降级提供依据
 
    - 可启用acl机制进行鉴权
 
    - 与Spring整合,接入简单松耦合
 
    - 多种序列化协议支持
 
 
dubbo的不足 
    - 消费者仍需要依赖配置中心
 
    - 消费者仍需要依赖jar包配置provider
 
    - 提供者文档管理功能缺失
 
    - 无统一入口
 
    - 不支持OAuth2.0
 
    - 内部鉴权不方便管理
 
    - 无外部应用鉴权
 
    - 接口基本裸奔,无法直接对外暴露服务
 
    - IT治理不方便
 
 
微服务 
现在很多人都在谈微服务,那么到底什么是微服务呢?这里谈谈我对微服务的理解。 
微服务有两个核心: 
    - 微:服务的粒度要细,即服务要细化到API
 
    - 服务:提供好服务,要让用户感到好用(要做到这一点很不容易)
 
 
微服务(Microservices)是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。 
微服务架构 ≈ 模块化开发 + 分布式计算 
 
从上面这幅图看出,微服务特别简单(好的架构就应该简单),我们把服务再拆分成一个个API,API是一个完整的功能。然后我们把API扔到一个“云上”,然后用户就可以到“云上”获取所有API的服务,这个“云”保证能提供好的服务。 
我们可以看到,有了微服务之后,服务对用户来说变得特别简单,而且上面dubbo的不足之处在微服务这里都解决了。使用者不再需要依赖任何jar包,不再需要去注册中心查找服务,不再去做鉴权处理,不用担心服务挂掉,不用担心不会使用服务,所有的问题这个“云”都解决了。这也是微服务的核心之一,提供好服务。 
说到这里,大家就应该大体知道该怎么做微服务了,图中的“云”是关键。下面我们就慢慢拨开这朵云。 
微服务的实现 
 
微服务的关键是服务网关,所以,上面提到的“云”就是服务网关。要做微服务,我们先定义一下微服务需要具备的特点。 
常见的微服务组件及概念: 
    - 服务注册 :服务提供方将自己调用地址注册到服务注册中心,让服务调用方能够方便地找到自己。
 
    - 服务发现 :服务调用方从服务注册中心找到自己需要调用的服务的地址。
 
    - 负载均衡 :服务提供方一般以多实例的形式提供服务,负载均衡功能能够让服务调用方连接到合适的服务节点。并且,节点选择的工作对服务调用方来说是透明的。
 
    - 服务网关 :服务网关是服务调用的唯一入口,可以在这个组件是实现用户鉴权、动态路由、灰度发布、A/B 测试、负载限流等功能。
 
    - 配置中心 :将本地化的配置信息(properties, xml, yaml  等)注册到配置中心,实现程序包在开发、测试、生产环境的无差别性,方便程序包的迁移。
 
    - API 管理 :以方便的形式编写及更新 API 文档,并以方便的形式供调用者查看和测试。
 
    - 集成框架  :微服务组件都以职责单一的程序包对外提供服务,集成框架以配置的形式将所有微服务组件(特别是管理端组件)集成到统一的界面框架下,让用户能够在统一的界面中使用系统。
 
    - 分布式事务 :对于重要的业务,需要通过分布式事务技术(TCC、高可用消息服务、最大努力通知)保证数据的一致性。
 
    - 调用链 :记录完成一个业务逻辑时调用到的微服务,并将这种串行或并行的调用关系展示出来。在系统出错时,可以方便地找到出错点。
 
    - 支撑平台 :系统微服务化后,系统变得更加碎片化,系统的部署、运维、监控等都比单体架构更加复杂,那么,就需要将大部分的工作自动化。现在,可以通过  Docker 等工具来中和这些微服务架构带来的弊端。  例如持续集成、蓝绿发布、健康检查、性能健康等等。严重点,以我们两年的实践经验,可以这么说,如果没有合适的支撑平台或工具,就不要使用微服务架构。
 
 
微服务架构的优点: 
    - 降低系统复杂度 :每个服务都比较简单,只关注于一个业务功能。
 
    - 松耦合 :微服务架构方式是松耦合的,每个微服务可由不同团队独立开发,互不影响。
 
    - 跨语言 :只要符合服务 API  契约,开发人员可以自由选择开发技术。这就意味着开发人员可以采用新技术编写或重构服务,由于服务相对较小,所以这并不会对整体应用造成太大影响。
 
    - 独立部署 :微服务架构可以使每个微服务独立部署。开发人员无需协调对服务升级或更改的部署。这些更改可以在测试通过后立即部署。所以微服务架构也使得 CI/CD  成为可能。
 
    - Docker 容器 :和 Docker 容器结合的更好。
 
    - DDD 领域驱动设计 :和 DDD 的概念契合,结合开发会更好。
 
 
                        (编辑:泰州站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |