跟我学CSE系列之7:使用CSE作为RPC框架

本文详细介绍了如何将Spring Cloud的REST服务改造成使用华为云CSE作为RPC框架的过程。改造后,开发者能获得一致的开发体验,更好的RPC支持和通信性能。同时,CSE提供了完整的服务治理、监控和调用链功能。文章涵盖了集成方式、改造步骤、客户端访问方法,并讨论了常见的问题和解决方案,如HttpServletRequest、Feign客户端的改造以及三方软件冲突的处理。
摘要由CSDN通过智能技术生成

CSE作为一个独立的RPC框架实现,可以非常容易集成到Spring Cloud中。通过将Spring RESTful Web Service替换为CSE,可以给开发者带来如下便利:

  • 一致的开发体验。使用CSE的SpringMVC模式,可以获得和Spring RESTful Web Service一致的开发体验,包括一样的声明式Annotation,使用RestTemplate进行访问。

  • 更好的RPC支持。使用CSE,开发者不需要在客户端使用Feign等组件访问服务,可以直接使用RPC访问,非常灵活。

  • 更好的通信性能和协议扩展。

  • 完整的开箱即用的服务治理、监控、调用链等功能。达到一键式启用的目的。

本章节仍然基于快速接入的示例,展示改造的步骤,以及改造以后的效果。点击下载地址获取改造后的项目。

集成方式

CSE支持如下几种集成方式,当需要和Spring Cloud集成的时候,CSE可以作为一个Servlet替换org.springframework.web.servlet.DispatcherServlet。

改造步骤

通过依赖spring-boot-starter-transport,可以引入对于CSE的依赖。为了简单的接入CSE,还引入了cse-solution-service-engine。

<dependency>
  <groupId>org.apache.servicecomb</groupId>
  <artifactId>spring-boot-starter-transport</artifactId>
</dependency>
<dependency>
   <groupId>com.huawei.paas.cse</groupId>
   <artifactId>cse-solution-service-engine</artifactId>
</dependency>

配置启动类和定义REST接口

在启动类Application里面加入@EnableServiceComb加载CSE运行时,并通过@SpringBootApplication(exclude=DispatcherServletAutoConfiguration.class)关闭Spring RESTful Web Service。

然后开发者就可以定义自己的REST接口(对应于Spring Cloud的Controller)。可以看出和Spring Cloud Controller的差异:

  • 使用@RestSchema声明接口,并且指定Schema ID。CSE会对每个REST接口都生成一个接口定义文件,并上传到服务中心。Schema ID在微服务内部需要保持唯一。

  • 显示的使用@RequestMapping定义路径。CSE支持JaxRS和SpringMVC两种方式定义REST接口,运行时根据这个标签来区分采用哪种方式生成契约。

其他服务的定义方式和Spring Cloud保持完全一致。CSE支持客户端以RestTemplate和RPC两种方式访问服务端,也可以通过浏览器使用REST的方式直接访问服务端,所以一个好的开发实践是给每个REST服务都定义一个接口Hello。使用CSE,不需要Spring Cloud的声明式REST调用(Feign),可以大大简化开发者的工作量。

@RestSchema(schemaId="hello")
@RequestMapping(path = &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值