基于CSE的微服务架构实践-Spring Boot技术栈选型

举报
liubao68 发表于 2019/02/26 15:48:35 2019/02/26
【摘要】 【摘要】 本文在前一篇“基于CSE的微服务架构实践-基础架构”基础上,介绍了在Spring Boot中集成CSE的技术选型参考。本文介绍了Spring Boot集成CSE的基本原理和工作流程,Spring Boot进行微服务开发组件选型参考,以及CSE的Edge Service的选型考量。

Spring Boot技术使得用户开发Spring应用更加容易,而SpringJAVA领域被广泛使用的框架。它提供了大量的组件供开发者使用,可以简化用户开发步骤,提升开发效率。CSE能够很好的被Spring Boot集成,集成以后,程序运行采用CSE运行时,能够使用CSE提供的各种开箱即用的能力,同时能够很好的使用Spring Boot提供的其他开发组件。

 

CSESpring Boot集成的原理是将Spring MVC(DispatcherServlet)提供的REST框架替换为CSE(RestServlet)提供的REST框架。

image.png


这两个框架也是可以并存的,只需要给两个Servlet指定不一样的URL前缀即可。


server.servlet.path=/mvc
servicecomb.rest.servlet.urlPattern=/cse/*


 

Spring MVCCSE都采用Spring MVC提供的标签定义REST接口,CSE支持的标签集合是Spring MVC的子集,CSE去掉了一些不符合Open API要求的开发支持,要求开发者在定义接口的时候,更加规范。这意味着用户任何时候,都可以非常方便的将CSE开发的应用替换为Spring Boot应用,而不需要做任何改动。

 

Spring MVCCSE的本质区别在于处理流程。Spring MVC的主要运行逻辑在客户端包括一系列的MessageConverters,在服务端的主要处理逻辑则在DispatcherServlet,可以由用户注入各种过滤器(Filter)和拦截器(Interceptor)。

image.png


CSE运行逻辑的特点是统一了客户端和服务端的处理模型,灵活配置一系列的Hanlder,并且引入了契约和异步处理机制。

image.png


由于CSE提供的一系列开发能力都是开箱即用的,因此能够快速在Spring Boot应用中构建商业特性。同时CSE引入了Open API作为整个运行时基础,能够更好的对服务进行接口管控,并且提供了大量的创新能力。

 

Spring Boot选型下,用户可以使用大量Spring Boot Starters来满足业务开发需求。

业务场景

技术选型

选型考虑

网关

CSE Edge Service

非常高效的异步通信支持的网关实现,同时最大限度开放了底层vert.x   API,转发逻辑可以由业务灵活定制。

实例隔离、重试、隔离仓等

CSE RPC内置功能

Hystrix在早期应用广泛,但是由于其性能问题、错误定位以及在业务场景上适应性问题,不建议用户采用,最新版本目前已经停止维护。

数据库访问

Spring Data JPA

Spring

Redis访问

Spring Data Redis

Spring

消息中间件

Spring Kafka, spring-boot-starter-activemq

Spring

分布式事务

ServiceComb pack (TCC)

Spring未提供分布式事务支持

认证鉴权

Spring Security

Spring

 

从上面功能看,除了网关服务,用户开发习惯基本和Spring Boot保持一致。上面网关的选型继续采用CSE Edge Service,是因为其他网关都没有提供接口兼容转发能力,这个能力,只有CSE框架能够提供,这个特性在灰度发布等应用场景下非常有用,允许用户多个不兼容的微服务版本同时并存,可以实现不兼容场景的升级零中断。

 image.png


上面展示了接口兼容转发能力是如何工作的。采用CSE Edge Service的另外一个理由,是它提供了原始的路由扩展能力和异步编程能力。公开原始路由扩展能力使得用户可以自由的定制各种复杂的路由规则,这个在单体应用改造等需要持续迭代演进,多种开发技术并存和需要频繁调整路由规则的场景非常重要,而异步编程能力对于性能优化则是非常重要的。当然灵活的定制能力和异步编程接口都使得Edge Service在使用上显得复杂。从经验看,理解这种复杂性是必要的,网关在业务系统中扮演者举足轻重的作用,开发者需要理解其工作原理,以更好的让应用系统适应各种复杂的性能优化需要。当然掌握这种复杂性也不难,虽然编码复杂,但是网关功能单一,随着技能的深入,掌握优化技巧是很迅速的。给业务设置一些必要的技巧,让开发者保持技术热情,有时候会有意外的收获。

 


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200