编辑: 木头飞艇 | 2019-07-13 |
1 电商网站微服务化应用实践 文档版本
01 (2019-06-20) 版权所有 ? 华为技术有限公司
1 4. 下载SockShop并解压. 总体结构 图1-1 SockShop 结构设计 SockShop应用改造步骤: l Java微服务迁移到ServiceComb Java框架 a. carts b. shipping c. orders l frontend (Node.js) 注册到服务中心 frontend l Go微服务迁移到ServiceComb Go框架 a. user b. payment c. catalogue l .NET微服务通过mesher接入服务中心 orders 说明 1. 原始orders服务分为Java版本和.NET版本,前者使用ServiceComb Java框架进行改造,后 者通过mesher接入服务中心. 2. 结构设计图中被shipping服务消费的rabbitmq和queuemaster在本例中由公有云DMS分布 式消息队列服务提供,并不以独立微服务的形式出现. 1.2 微服务改造 微服务云应用平台 最佳实践
1 电商网站微服务化应用实践 文档版本
01 (2019-06-20) 版权所有 ? 华为技术有限公司
2 1.2.1 Java 微服务 注册服务中心地址 说明 1. 本节展示SockShop进行ServiceComb框架改造的一些配置信息,该项目的配置信息已齐全, 应用镜像已更新在公有云,用户可直接进行微服务上线操作. 2. 以carts微服务为例,介绍Java微服务的改造流程.carts和shipping微服务是用Java语言实现 的,改造流程类似. 在carts源码项目中,新增并修改sockshop-demo/carts/src/main/resources/ microservice.yaml,配置服务中心的注册地址,如下所示. APPLICATION_ID: sockshop service_description: name: carts version: 0.0.1 cse: service: registry: address: https://${SC_HOST} config: client: serverUri: https://${SC_HOST} monitor: client: serverUri: https://${SC_HOST} credentials: accessKey: ${AK_KEY} secretKey: ${SK_KEY} rest: address: 0.0.0.0:7072 说明 l service_description.name为微服务的名称,不同微服务的名称如下: l carts微服务:carts l shipping微服务:shipping l ${SC_HOST}为服务中心地址,即域名地址,在该文件中以变量名称作为标识即可,源码中 无需配置真实的服务中心地址. l ${AK_KEY}和${SK_KEY}是用户的aksk信息. 添加 ServiceComb 依赖 在carts源码项目中,修改sockshop-demo/carts/pom.xml,添加ServiceComb的pom文件依 赖,如下所示. org.apache.servicecomb spring-boot-starter-provider 启动 ServiceComb 服务 在carts微服务程序的主类中,添加@EnableServiceComb,文件位于sockshop-demo/ carts/src/main/java/works/weave/socks/cart/CartApplication.java,内容如下所示. @SpringBootApplication @EnableServiceComb 微服务云应用平台 最佳实践
1 电商网站微服务化应用实践 文档版本
01 (2019-06-20) 版权所有 ? 华为技术有限公司
3 @EnablePrometheusEndpoint public class CartApplication { public static void main(String[] args) { SpringApplication.run(CartApplication.class, args);
} } 说明 不同微服务程序的主类如下: l carts微服务:CartApplication l shipping微服务:ShippingServiceApplication 变更 Controller 控制器 在carts控制器类中,添加@RestSchema(schemaId = carts ),使其以ServiceComb方式启 动,文件位于sockshop-demo/carts/src/main/java/works/weave/socks/cart/controllers/ CartsController.java,内容如下所示. @RestSchema(schemaId = carts ) @RequestMapping(path = /carts , produces = MediaType.APPLICATION_JSON_VALUE) public class CartsController { private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired private CartDAO cartDAO;
说明 l schemaId为微服务的名称ID,不同微服务的名称ID如下: l carts微服务:carts l shipping微服务:shipping l 不同微服务的控制类如下: l carts微服务:CartsController l shipping微服务:ShippingController 1.2.2 Node.js 微服务 介绍frontend微服务的改造流程. 步骤1 通过mesher将front-end服务注册到服务中心,只需要配置mesher的地址为proxy地址即 可.在sockshop-demo/front-end/api/service.js中配置proxy的地址. if (process.env.MODE == sidecar ) { module.exports.proxy = process.env.SERVICE_MESH_IP } else { module.exports.proxy = http:// +process.env.SERVMESHER_SERVICE_HOST+ :30101 } 步骤2 在sockshop-demo/front-end/helpers/index.js中保证所有的NodeJS的请求都包含proxy. helpers.simpleHttpRequest = function(url, res, next) { console.log( simpleHttpRequest url , url);