【摘要】 本文在前一篇“基于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框架。

这两个框架也是可以并存的,只需要给两个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)。

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

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

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

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

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

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

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

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

    [摘要] 本文介绍了CSE和Spring Cloud的关系,在技术选型上的差异.介绍了Spring Cloud用户使用Spring Cloud物理多租和进行CSE开发的两种策略. 当Spring Cl ...

  2. 基于CSE的微服务架构实践-轻量级架构技术选型

    [摘要] 本文在前一篇"基于CSE的微服务架构实践-基础架构"基础上,介绍了使用CSE进行轻量级架构的技术选型参考.文末提供了基于JWT的微服务认证鉴权方案. 轻量级架构模式下,可 ...

  3. 基于 Docker 的微服务架构实践

    http://dockone.io/article/4887 前言 基于 Docker 的容器技术是在2015年的时候开始接触的,两年多的时间,作为一名 Docker 的 DevOps,也见证了 Do ...

  4. 基于 lumen 的微服务架构实践

    lumen 为速度而生的 Laravel 框架 官网的介绍很简洁,而且 lumen 确实也很简单,我在调研了 lumen 相关组件(比如缓存,队列,校验,路由,中间件和最重要的容器)之后认为已经能够满 ...

  5. 微服务架构与Spring Cloud Alibaba

    微服务架构与Spring Cloud Spring Cloud 微服务架构 1 微服务架构概述 2 Spring Cloud 微服务简介 3 Spring Cloud 技术栈 4 总结 Spring ...

  6. 放弃Dubbo,选择最流行的Spring Cloud微服务架构实践与经验总结

    Spring Cloud 在国内中小型公司能用起来吗?从 2016 年初一直到现在,我们在这条路上已经走了一年多. 在使用 Spring Cloud 之前,我们对微服务实践是没有太多的体会和经验的.从 ...

  7. 基于 Docker 的微服务架构

    基于 Docker 的微服务架构-分布式企业级实践 前言 Microservice 和 Docker 服务发现模式 客户端发现模式 Netflix-Eureka 服务端发现模式 Consul Etcd ...

  8. 基于SpringCloud的微服务架构演变史?

    系统架构演变概述 在公司业务初创时期,面对的主要问题是如何将一个想法变成实际的软件实现,在这个时候整个软件系统的架构并没有搞得那么复杂,为了快速迭代,整个软件系统就是由"App+后台服务&q ...

  9. 微服务架构技术调研<3>--微服务架构实践

    引言: 由于公司商业上有实打实的需求和场景,倒逼产品开始思考架构升级,以适应这种商业环境的快速变化.架构师在进行技术选型或者架构升级前,需要做大量技术调研.竞品分析,<微服务架构综述>则是 ...

最新文章

  1. Maven一:maven的下载和环境安装以及创建简单的Maven项目
  2. opencv求两张图像光流_OpenCV单应性矩阵发现参数估算方法详解
  3. Android 动态类加载实现免安装更新
  4. Win11怎么设置耳机和音响一起响
  5. 策略 python_Python版商品期货多品种均线策略
  6. 为CheckBoxList每个项目添加一张图片
  7. (IStool)判断系统位数并打包不同的文件
  8. LDD3 第15章 内存映射和DMA
  9. 拓端tecdat|用R语言和python进行社交网络中的社区检测
  10. linux大华客户端,rdesktop 下载-rdesktop(Linux下远程桌面客户端) 1.8.2 官方版 - 河东下载站...
  11. IMU(陀螺仪)角速度测量原理-科氏力测旋转角速度
  12. 计算机知识论,计算机科学与技术中的系统论与辩证法
  13. 关于Python中rank()函数的理解
  14. JavaScript的对象、属性与方法
  15. Android设置透明状态栏,仿ios状态栏
  16. 快递管理系统 V2.0
  17. Python(Python+Qt)学习随笔:使用xlwings新建Execl文件和sheet的方法
  18. 小程序加密解密完成版
  19. Avalonia学习实践(二)--跨平台支持及发布
  20. 电脑为什么刚开机时网速挺快,可过一段时间后就很慢了?重启电脑就解决了问题。

热门文章

  1. python中range和arange的区别_Python3中range , arange 和linspace 的异同
  2. java电力巡检系统 项目讲解_公司召开安全巡检系统APP试点项目上线启动会
  3. Arrays.asList()知识点
  4. 洛谷T1967 货车运输 Kruskal最大生成树倍增LCA
  5. FineReport:关于扩展行列求各种条件下的函数运用
  6. Sdut 2165 Crack Mathmen(数论)(山东省ACM第二届省赛E 题)
  7. .net下完成端口(IOCP)的实现
  8. 小议size_t和size_type
  9. 敏捷无敌之重任在肩(7)
  10. C语言课后习题(47)