wordpress前台头像,青岛抖音seo,网络营销推广的渠道是什么,wordpress显示评论本文主要围绕微服务的技术选型、通讯协议、服务依赖模式、开始模式、运行模式等几方面来综合比较Dubbo和Spring Cloud 这2种开发框架。架构师可以根据公司的技术实力并结合项目的特点来选择某个合适的微服务架构平台#xff0c;以此稳妥地实施项目的微服务化改造或开发进程。 … 本文主要围绕微服务的技术选型、通讯协议、服务依赖模式、开始模式、运行模式等几方面来综合比较Dubbo和Spring Cloud 这2种开发框架。架构师可以根据公司的技术实力并结合项目的特点来选择某个合适的微服务架构平台以此稳妥地实施项目的微服务化改造或开发进程。 微服务架构是互联网很热门的话题是互联网技术发展的必然结果。它提倡将单一应用程序划分成一组小的服务服务之间互相协调、互相配合为用户提供最终价值。虽然微服务架构没有公认的技术标准和规范或者草案但业界已经有一些很有影响力的开源微服务架构框架提供了微服务的关键思路例如Dubbo和Spring Cloud。各大互联网公司也有自研的微服务框架但其模式都于这二者相差不大。 微服务主要的优势如下 1、降低复杂度 将原来偶合在一起的复杂业务拆分为单个服务规避了原本复杂度无止境的积累。每一个微服务专注于单一功能并通过定义良好的接口清晰表述服务边界。每个服务开发者只专注服务本身通过使用缓存、DAL等各种技术手段来提升系统的性能而对于消费方来说完全透明。 2、可独立部署 由于微服务具备独立的运行进程所以每个微服务可以独立部署。当业务迭代时只需要发布相关服务的迭代即可降低了测试的工作量同时也降低了服务发布的风险。 3、容错 在微服务架构下当某一组件发生故障时故障会被隔离在单个服务中。 通过限流、熔断等方式降低错误导致的危害保障核心业务正常运行。 4、扩展 单块架构应用也可以实现横向扩展就是将整个应用完整的复制到不同的节点。当应用的不同组件在扩展需求上存在差异时微服务架构便体现出其灵活性因为每个服务可以根据实际需求独立进行扩展。 本文主要围绕微服务的技术选型、通讯协议、服务依赖模式、开始模式、运行模式等几方面来综合比较Dubbo和Spring Cloud 这2种开发框架。架构师可以根据公司的技术实力并结合项目的特点来选择某个合适的微服务架构平台以此稳妥地实施项目的微服务化改造或开发进程。 一、核心部件 微服务的核心要素在于服务的发现、注册、路由、熔断、降级、分布式配置基于上述几种必要条件对Dubbo和Spring Cloud做出对比。 1、总体架构 Dubbo 核心部件如下图: Provider 暴露服务的提供方可以通过jar或者容器的方式启动服务 Consumer调用远程服务的服务消费方。 Registry 服务注册中心和发现中心。 Monitor 统计服务和调用次数调用时间监控中心。dubbo的控制台页面中可以显示目前只有一个简单版本 Container服务运行的容器。 ▲Dubbo 总体架构 Spring Cloud总体架构如下图 Service Provider 暴露服务的提供方。 Service Consumer调用远程服务的服务消费方。 EureKa Server 服务注册中心和服务发现中心。 ▲Spring Cloud总体架构 点评从整体架构上来看二者模式接近都需要需要服务提供方注册中心服务消费方。 2、微服务架构核心要素 Dubbo只是实现了服务治理而Spring Cloud子项目分别覆盖了微服务架构下的众多部件而服务治理只是其中的一个方面。Dubbo提供了各种Filter对于上述中“无”的要素可以通过扩展Filter来完善。 例如 1分布式配置可以使用淘宝的diamond、百度的disconf来实现分布式配置管理 2服务跟踪可以使用京东开源的Hydra或者扩展Filter用Zippin来做服务跟踪 3批量任务可以使用当当开源的Elastic-Job、tbschedule 点评从核心要素来看Spring Cloud 更胜一筹在开发过程中只要整合Spring Cloud的子项目就可以顺利的完成各种组件的融合而Dubbo缺需要通过实现各种Filter来做定制开发成本以及技术难度略高。 二、通讯协议 基于通讯协议层面对2种框架支持的协议类型以及运行效率方面进行比较 一、支持协议 1、Dubbodubbo使用RPC通讯协议提供序列化方式如下 dubboDubbo缺省协议采用单一长连接和NIO异步通讯适合于小数据量大并发的服务调用以及服务消费者机器数远大于服务提供者机器数的情况 rmiRMI协议采用JDK标准的java.rmi.*实现采用阻塞式短连接和JDK标准序列化方式 Hessian:Hessian协议用于集成Hessian的服务Hessian底层采用Http通讯采用Servlet暴露服务Dubbo缺省内嵌Jetty作为服务器实现 http:采用Spring的HttpInvoker实现 Webservice:基于CXF的frontend-simple和transports-http实现 2、Spring CloudSpring Cloud 使用HTTP协议的REST API 二、性能比较 使用一个Pojo对象包含10个属性请求10万次Dubbo和Spring Cloud在不同的线程数量下每次请求耗时ms如下 说明客户端和服务端配置均采用阿里云的ECS服务器4核8G配置dubbo采用默认的dubbo协议 点评dubbo支持各种通信协议而且消费方和服务方使用长链接方式交互通信速度上略胜Spring Cloud如果对于系统的响应时间有严格要求长链接更合适。 三、服务依赖方式 Dubbo服务提供方与消费方通过接口的方式依赖服务调用设计如下 interface层服务接口层定义了服务对外提供的所有接口 Molel层服务的DTO对象层 business层业务实现层实现interface接口并且和DB交互 因此需要为每个微服务定义了各自的interface接口并通过持续集成发布到私有仓库中调用方应用对微服务提供的抽象接口存在强依赖关系开发、测试、集成环境都需要严格的管理版本依赖。 通过maven的install deploy命令把interface和Model层发布到仓库中服务调用方只需要依赖interface和model层即可。在开发调试阶段只发布Snapshot版本。等到服务调试完成再发布Release版本通过版本号来区分每次迭代的版本。通过xml配置方式即可方面接入dubbo对程序无入侵。 ▲Dubbo接口依赖方式 Spring Cloud服务提供方和服务消费方通过json方式交互因此只需要定义好相关json字段即可消费方和提供方无接口依赖。通过注解方式来实现服务配置对于程序有一定入侵。 点评Dubbo服务依赖略重需要有完善的版本管理机制但是程序入侵少。而Spring Cloud通过Json交互省略了版本管理的问题但是具体字段含义需要统一管理自身Rest API方式交互为跨平台调用奠定了基础。 四、组件运行流程 下图中的每个组件都是需要部署在单独的服务器上gateway用来接受前端请求、聚合服务并批量调用后台原子服务。每个service层和单独的DB交互。 ▲Dubbo组件运行流程 gateWay:前置网关具体业务操作gateWay通过dubbo提供的负载均衡机制自动完成 Service原子服务只提供该业务相关的原子服务 Zookeeper原子服务注册到zk上 ▲Spring Cloud 组件运行 Spring Cloud 所有请求都统一通过 API 网关Zuul来访问内部服务。 网关接收到请求后从注册中心Eureka获取可用服务。 由 Ribbon 进行均衡负载后分发到后端的具体实例。 微服务之间通过 Feign 进行通信处理业务。 点评业务部署方式相同都需要前置一个网关来隔绝外部直接调用原子服务的风险。Dubbo需要自己开发一套API 网关而Spring Cloud则可以通过Zuul配置即可完成网关定制。使用方式上Spring Cloud略胜一筹。 五、微服务架构组成以及注意事项 到底使用是dubbo还是Spring Cloud其实并不重要重点在于如何合理的利用微服务。下面是一张互联网通用的架构图,其中每个环节都是微服务的核心部分。 一、架构分解 网关集群数据的聚合、实现对接入客户端的身份认证、防报文重放与防数据篡改、功能调用的业务鉴权、响应数据的脱敏、流量与并发控制等 业务集群一般情况下移动端访问和浏览器访问的网关需要隔离防止业务耦合 Local Cache由于客户端访问业务可能需要调用多个服务聚合所以本地缓存有效的降低了服务调用的频次同时也提示了访问速度。本地缓存一般使用自动过期方式业务场景中允许有一定的数据延时。 服务层原子服务层实现基础的增删改查功能如果需要依赖其他服务需要在Service层主动调用 Remote Cache访问DB前置一层分布式缓存减少DB交互次数提升系统的TPS DAL数据访问层如果单表数据量过大则需要通过DAL层做数据的分库分表处理。 MQ消息队列用来解耦服务之间的依赖异步调用可以通过MQ的方式来执行 数据库主从服务化过程中毕竟的阶段用来提升系统的TPS 二注意事项 服务启动方式建议使用jar方式启动启动速度快更容易监控 缓存、缓存、缓存系统中能使用缓存的地方尽量使用缓存通过合理的使用缓存可以有效的提高系统的TPS 服务拆分要合理尽量避免因服务拆分而导致的服务循环依赖 合理的设置线程池避免设置过大或者过小导致系统异常 六、总结 Dubbo出生于阿里系是阿里巴巴服务化治理的核心框架并被广泛应用于中国各互联网公司只需要通过spring配置的方式即可完成服务化对于应用无入侵。设计的目的还是服务于自身的业务为主。虽然阿里内部原因dubbo曾经一度暂停维护版本但是框架本身的成熟度以及文档的完善程度完全能满足各大互联网公司的业务需求。如果我们需要使用配置中心、分布式跟踪这些内容都需要自己去集成这样无形中增加了使用 Dubbo 的难度。 Spring Cloud 是大名鼎鼎的 Spring 家族的产品 专注于企业级开源框架的研发。 Spring Cloud 自从发展到现在仍然在不断的高速发展几乎考虑了服务治理的方方面面开发起来非常的便利和简单。 Dubbo于2017年开始又重启维护发布了更新后的2.5.6版本而Spring Cloud更新的非常快目前已经更新到Finchley.M2。因此企业需要根据自身的研发水平和所处阶段选择合适的架构来解决业务问题不管是Dubbo还是Spring Cloud都是实现微服务有效的工具。 你可能也喜欢: Spring Cloud的核心成员、以及架构实现详细介绍 微服务系列服务注册与发现的实现原理、及实现优劣势比较 阿里P8架构师谈从单体架构、到SOA、再到微服务的架构设计详解阿里P8架构师谈Zookeeper的原理和架构设计以及应用场景阿里P8架构师谈Spring Cloud与Dubbo的详细比较阿里P8架构师谈Restful、SOAP、RPC、SOA、微服务之间的区别