Java Chassis 3技术解密,流式响应如何简化AI应用开发

祗疼妳一个  金牌会员 | 2024-7-1 10:42:05 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 838|帖子 838|积分 2514

本文分享自华为云社区《Java Chassis 3技术解密:流式响应和人工智能应用开发》,作者:liubao68。
随着生成式人工智能技术的发展,应用程序开发者对于流式响应(Streaming Responses)的诉求越来越多。服务器事件推送(Server Push Events)技术能够在使用HTTP协议的条件下,提供流式响应能力。然而,在微服务架构下使用流式响应并不是那么方便,现有的各个微服务开发框架都需要使用不同于响应应答的普通REST接口额外能力,采用新的技术大概API来满意流式响应的开发诉求,增加了技术资源。
Java Chassis 3基于服务器事件推送和响应式流(reactive streams)标准,提供了非常简洁的流式响应开发能力,简化人工智能应用开发体验。
使用流式响应

起首,看看微服务架构下一个简朴的调用场景。
  1.   前端(浏览器) -> 应用网关(edge service) -> 消费者微服务 -> 提供者微服务
复制代码

  • 提供者微服务:定义流式响应服务和生成流式响应
定义流式响应服务非常简朴,只需要将响应类型声明为 Publisher。 业务逻辑可以使用 RxJava 大概 Reactor 等框架生成流式响应。 在下面的例子中,使用 RxJava3 的API来实现流式响应。
  1. @RestSchema(schemaId = "ReactiveStreamController")
  2. @RequestMapping(path = "/")
  3. public class ReactiveStreamController {
  4.   @GetMapping("/sseString")
  5.   public Publisher<String> sseString() {
  6.     return Flowable.fromArray("a", "b", "c");
  7.   }
  8.   @GetMapping("/sseModel")
  9.   public Publisher<Model> sseModel() {
  10.     return Flowable.intervalRange(0, 5, 0, 1, TimeUnit.SECONDS)
  11.         .map(item -> new Model("jack", item.intValue()));
  12.   }
  13. }
复制代码

  • 消费者微服务: 消费流式响应,并对外提供新的流式响应服务
消费者可以像调用普通REST接口一样调用流式响应服务,开发起来非常简朴。
  1. @RestSchema(schemaId = "ReactiveStreamController")
  2. @RequestMapping(path = "/")
  3. public class ConsumerReactiveStreamController {
  4.   interface ProviderReactiveStreamController {
  5.     Publisher<String> sseString();
  6.     Publisher<Model> sseModel();
  7.   }
  8.   @RpcReference(microserviceName = "provider", schemaId = "ReactiveStreamController")
  9.   ProviderReactiveStreamController controller;
  10.   @GetMapping("/sseString")
  11.   public Publisher<String> sseString() {
  12.     return controller.sseString();
  13.   }
  14.   @GetMapping("/sseModel")
  15.   public Publisher<Model> sseModel() {
  16.     return controller.sseModel();
  17.   }
  18. }
复制代码

  • 应用网关:透明转发
应用网关无需做额外配置,能够实现流式响应的透明转发。

  • 前端(浏览器):消费消息
大部分浏览器都支持通过 EventSource 消费流式响应。下面是简朴的代码片断:
[code][/code]相关的技术实现

Spring Boot采用SseEmitter来定义服务器事件推送,假如需要使用流式响应,则必须使用WebFlux,在微服务场景下,则需要使用WebClient来消费。这些使用方式与WebMvc集成和注册发现集成都会带来非常大的开发麻烦。 Java Chassis 3给开发者提供了非常棒的统逐一致的开发体验。
在 小艺 人工智能应用中,需要大量使用流式响应,包括微服务之间。为了实现这些功能,需要额外开发大量代码,并且与现有的REST框架没有实现统逐一致的服务治理规范,给应用的可维护性和质量带来了隐患。 通过新的流式响应API能够极大的简化小艺场景的开发。
点击关注,第一时间相识华为云新鲜技术~
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

祗疼妳一个

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表