zoukankan      html  css  js  c++  java
  • 基于CSE的微服务架构实践-Spring Boot技术栈选型

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

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

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

    image.png

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

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

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

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

    image.png

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

    image.png

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

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

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

     image.png

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

     来源:华为云社区  作者:liubao68

  • 相关阅读:
    网络七层
    微信小程序开发工具 常用快捷键
    BZOJ 1026 windy数 (数位DP)
    BZOJ 1026 windy数 (数位DP)
    CodeForces 55D Beautiful numbers (SPOJ JZPEXT 数位DP)
    CodeForces 55D Beautiful numbers (SPOJ JZPEXT 数位DP)
    HDU 3709 Balanced Number (数位DP)
    HDU 3709 Balanced Number (数位DP)
    UVA 11361 Investigating Div-Sum Property (数位DP)
    UVA 11361 Investigating Div-Sum Property (数位DP)
  • 原文地址:https://www.cnblogs.com/2020-zhy-jzoj/p/13165938.html
Copyright © 2011-2022 走看看