service-mesh-应用接入
所有文档

          云原生微服务应用平台 CNAP

          service-mesh-应用接入

          准备工作

          服务网格(Service Mesh)是致力于解决服务间通讯的基础设施层,用于处理服务间通讯。Service Mesh 通常是通过一组轻量级网络代理(Sidecar proxy),与应用程序代码部署在一起来实现,而无需感知应用程序本身。

          我们提供了简单的demo样例可供您快速开始了解并体验我们的平台:服务样例下载

          创建服务提供者

          这里以go语言为例,在本地创建服务提供者应用,并将自身服务注册到微服务平台的服务注册中心,以便服务消费者调用。

          1. 创建web应用,该应用监听在9091端口,供服务消费者调用
          // 服务提供者健康检查接口
          http.HandleFunc("/health", healthCheck) 
          // 服务提供者功能接口
          http.HandleFunc("/echo", echo)
          if err := http.ListenAndServe(":9091", nil); err != nil {
                 log.Fatalln("ListenAndServe: ", err)
          }
          1. 代码编译
          GOOS=linux GOARCH=amd64 go build

          创建服务消费者

          这里以go语言为例,在本地创建服务消费者应用,并将自身服务注册到微服务平台的服务注册中心,同时,该应用可以发现provider服务,并完成调用。

          1. 创建web应用,该应用监听在9090端口,供外部访问
          // 消费者健康检查接口
          http.HandleFunc("/health", healthCheck)
          // 外部访问接口,该接口调用mesh-provider的echo接口并返回处理结果
          http.HandleFunc("/echo", echo)
          if err := http.ListenAndServe(":9090", nil); err != nil {
              log.Fatalln("ListeneAndServe error: ", err)
          }
          1. 在代码中添加调用链相关的头
          TRACE_HEADERS = []string{
              "X-B3-SpanId",
              "X-B3-TraceId",
              "X-B3-ParentSpanId",
              "X-B3-Sampled",
              "X-B3-Flags",
              "X-Ot-Span-Context",
              "X-Request-Id",
              "X-Method",
              "X-ParentMethod",
          }

          注意: Mesh 的调用链通过header传递实现。如果用户想要得到不同服务之间的调用关系,需要在访问其他服务时,带上父调用的相关调用链头,如果不使用调用链和拓扑功能,这里可以不进行添加。

          1. 代码编译
          GOOS=linux GOARCH=amd64 go build

          CNAP平台部署

          1. 制作镜像

          以consumer为例,制作镜像所需的Dockerfile参考如下:

          # 基础镜像,用户可选使用
          FROM hub.baidubce.com/cnap-public/mesh-base:ubuntu
          # 添加编译好的二进制文件
          COPY mesh-consumer /usr/local/bin
          # 添加启动命令
          CMD ["/usr/local/bin/mesh-consumer", "-a", "http://mesh-provider:9091"]

          使用以上Dockerfile完成镜像编译:

          docker build -t hub.baidubce.com/[namespace]/[ImageName]:[镜像版本] .

          注意: namespace为环境准备中创建的命名空间的名称;ImageName由用户指定所创建镜像的名称。

          将编译完成的镜像推送到镜像仓库:

          docker push hub.baidubce.com/[namespace]/[ImageName]:[镜像版本]
          1. 使用CNAP平台进行部署

          请参考CNAP操作手册中的服务部署部分。
          注意:针对mesh类型的应用,需要在控制台填写mesh服务的端口。同时,填写的应用名需要与服务名保持一致。

          3.检查部署结果

          成功部署后将在CNAP平台 – 服务列表页中看到注册上的服务信息

          MacHi 2019-11-12 18-03-54.png

          1. 服务验证 可以通过调用以下接口,观察调用返回是否符合预期
          curl xx.xx.xx.xx:9090/echo?value=helloworld
          1. 路由

          Service Mesh应用支持路由功能,无需用户进行业务改造,使用手册参考微服务管理中的路由部分。

          上一篇
          配置中心接入
          下一篇
          轻量级注册中心接入