1.1.1 开发简介
微服务简介
随着微服务架构模式被越来越多的开发者作为应用系统构建的首选,稳定可靠的微服 务运行环境变的非常重要。
微服务引擎(CSE)是应用管理与运维平台(ServiceStage)针对微服务解决方案提供 的一站式管理平台,使用微服务引擎,开发者可以更加专注于业务开发,提升产品交 付效率和质量。微服务架构模式通常包含如下内容:
● 微服务之间的RPC通信。微服务架构模式要求微服务之间通过RPC进行通信,不采 用其他传统的通信方式,比如共享内存、管道等。常见的RPC通信协议包括 REST、gRPC、Web Service等。使用RPC通信,能够降低微服务之间的耦合,提 升系统的开放性,减少技术选型的限制。一般建议采用业界标准协议,比如 REST。对于性能要求非常高的场景,也可以考虑私有协议。
● 分布式微服务实例和服务发现。微服务架构特别强调架构的弹性,业务架构需要 支持微服务多实例部署来满足业务流量的动态变化。微服务设计一般会遵循无状 态设计原则,符合该原则的微服务扩充实例,能够带来处理性能的线性提升。当 实例数很多的时候,就需要有一个支持服务注册和发现的中间件,用于微服务之 间的调用寻址。
● 配置外置及动态、集中的配置管理。随着微服务和实例数的增加,管理微服务的 配置会变得越来越复杂。配置管理中间件给所有微服务提供统一的配置管理视 图,有效降低配置管理的复杂性。配置管理中间件搭配治理控制台,可以在微服 务运行态对微服务的行为进行调整,满足业务场景变化、不升级应用的业务诉 求。
● 提供熔断、隔离、限流、负载均衡等微服务治理能力。微服务架构存在一些常见 的故障模式,通过这些治理能力,能够减少故障对于整体业务的影响,避免雪崩 效应。
● 分布式事务管理能力。常见的分布式事务处理模式包括Saga、TCC、无侵入式 等。分布式事务管理可以降低处理分布式事务一致性问题的难度。
● 调用链、集中日志采集和检索。查看日志仍然是分析系统故障最常用的手段,调 用链信息可以帮助界定故障和分析性能瓶颈。
有很多开源框架,比如Apache ServiceComb Java Chassis(简称Java Chassis)、
Spring Cloud、Apache Dubbo(简称Dubbo)、Go Chassis等,实现了微服务架构 模式。微服务引擎支持这些开源的微服务框架接入并使用微服务架构模式的注册发 现、集中配置、服务治理、分布式事务等功能。关系如下图所示:
开发能力要求
本文档的主要目的就是说明这些开源微服务开发框架如何接入和使用微服务引擎的功 能,假设您已经熟悉和掌握如下开发能力:
● 使用Java或者Go语言进行微服务开发。假设您已经基于一种ServiceStage支持的 微服务开发框架开发了应用系统,并期望将应用系统托管在微服务引擎上运行。
本文档提供微服务应用接入微服务引擎的相关技术支持。开源微服务开发框架如 何使用不是本文档的范围,您可以通过开源社区获取相关微服务开发框架的入门 材料和开发指南。
● 理解注册中心、配置中心在微服务应用中的作用,并在项目中搭建和使用注册中 心。不同的微服务开发框架默认支持的开源注册中心会有差异,理解注册中心的 作用,可以更加容易的更换注册中心。
● 熟悉虚机或者容器环境部署应用,请参考应用组件部署。
微服务开发框架版本说明
微服务开发框架支持的版本和推荐版本如下表所示,如果您已经使用低版本的微服务 开发框架构建应用,建议升级到推荐版本,以获取最稳定和丰富的功能体验。
框架 支持版本 推荐版本 接入说明
JavaChassis 2.1.3及以上 2.3.0及以上 可以直接使用开源项目提供的软件 包接入,不需要引用其他第三方软 件包。
JavaChassis 2.0.0~2.1.2 - 可以直接接入微服务引擎专享版。
接入微服务引擎专业版,需要额外 引入由CSE SDK提供的
foundation-auth软件包。
JavaChassis 1.3.x
-GoChassis 2.x.x 2.2.0及以上 可以直接使用开源项目提供的软件 包接入,不需要引用其他第三方软
Cloud 1.5.1-Hoxton及以 上
1.6.0-Hoxton及以 上
采用Spring Cloud Huawei项目 提供接入支持。推荐版本为Spring Cloud Huawei的版本号。
Spring
Cloud 1.5.1-Greenwich及 以上
- 采用Spring Cloud Huawei项目 提供接入支持。
Spring
Cloud 1.5.1-Finchley及以
上 - 采用Spring Cloud Huawei项目 提供接入支持。
Apache
Dubbo 1.3.x (Dubbo
2.7.x) 1.3.6及以上 采用Dubbo ServiceComb项目提 供接入支持。推荐版本为Dubbo Serivcecomb的版本号。
Apache
Dubbo 1.1.x (Dubbo
2.6.x) - 采用Dubbo ServiceComb项目提 供接入支持。
● 微服务环境:服务中心建立的一个逻辑概念,比如development、production 等。不同环境里面的微服务实例逻辑隔离、无法相互发现和调用。
ServiceStage 核心概念
ServiceStage也存在几个对应的概念,在实际使用过程中容易发生混淆,包括:
● 应用:ServiceStage的应用和微服务引擎的应用在含义上类似。ServiceStage的应 用名称是部署环节指定的,微服务引擎的应用是微服务开发环节指定的,两者没 有必然联系,可以不同。微服务开发框架都提供了环境变量映射的功能,通过环 境变量映射的功能,开发者可以使用ServiceStage的应用名称作为微服务的应用名 称。
● 组件:ServiceStage的组件对应于微服务引擎的微服务。和应用一样,名称分别是 部署环节指定和开发环节指定,通过环境变量映射,微服务引擎可以使用
ServiceStage的组件名称。
● 实例:ServiceStage的实例对应于微服务引擎的实例。只要部署成功,
ServiceStage就有实例了。微服务引擎要求必须成功注册到服务中心,才会有实 例。在服务正常注册的情况下,两者实例数是一样的,注册失败的情况下,微服 务引擎没有实例,而ServiceStage有实例。
● 环境:ServiceStage的环境和微服务引擎的环境概念不同。ServiceStage的环境是 一系列资源组成的运行环境,环境里面包含了微服务引擎、云容器引擎(CCE)等 资源。
1.1.3 开发流程
开发流程概述
开发应用和使用微服务引擎,需要经过如图1-1所示的几个阶段。
图1-1 开发流程
开发流程说明
1. 开发微服务应用
如果您已经完成了微服务应用的开发,可以跳过本流程,进入准备环境。
进行微服务应用开发,首先需要进行技术选型。技术选型是一个复杂的问题,技 术决策者需要考虑使用的技术是否容易被团队成员掌握,技术能否满足项目对于 功能、性能、可靠性方面的要求,还需要考虑商业服务等多方面的因素。本文档 不探讨技术选型,假设技术团队已经选择了适合自己的开发框架。大部分技术团 队都会选择开源框架来构建业务。
开发微服务应用的具体内容,请参考开发微服务应用。
– 使用Java Chassis,通常会使用下面的技术进行本地微服务开发:
– 使用Dubbo,通常会使用下面的技术进行本地微服务开发:
– 使用Spring Cloud,通常会使用下面的技术进行本地微服务开发:
2. 准备环境
创建云上环境,以支持微服务引擎接入调试、云上应用部署和使用微服务引擎功 能。一般情况下,会创建一个测试环境和一个生产环境。通过ServiceStage,能够 非常方便的管理云上环境,详细内容请参考准备环境。
3. 对接微服务应用
用于微服务应用对接微服务引擎,涉及到对已经开发好的应用的配置文件、构建 脚本的修改。修改完成后,需要对应用重新编译、打包,通过ServiceStage将应用 包部署到微服务引擎,详细内容请参考对接微服务应用。
4. 部署微服务应用
开发完成的微服务应用,通过ServiceStage部署到微服务引擎,详细内容请参考部 署微服务应用。
5. 使用微服务引擎功能
对于持续发展的应用系统,都会持续完善和迭代,每个迭代可能需要对微服务应 用进行更新升级,需要使用更多的微服务引擎功能。持续迭代的功能演进,会重 复上面的应用开发、编译、打包和部署环节。详细内容请参考使用微服务引擎功 能。