华为云微服务治理方案
华为云微服务方案:华为云PaaS平台介绍、微服务引擎CSE、Edge Service、云容器CCE
文章目录
一、华为云PaaS平台介绍
华为云PaaS
平台以华为FusionStage2.0
项目为基础,基于Docker
、Kubernetes
等主流开源容器项目,提供了开发、测试、部署、运维的全流程自动化流水线能力,提供先进的微服务框架和丰富的服务组件,致力于让开发者专注于代码开发本身,提升开发效率,支持丰富的应用生态,推动企业更好的云化转型。
华为云PaaS
平台不光提供云容器部署、微服务治理的功能,而且提供微服务开发、测试、部署、运维一站式解决方 案,支持Dubbo
、SpringCloud
等技术开发的微服务接入PaaS
平台,也支持老系统的接入,并且对于Apache ServiceComb
开的微服务应用更是零修改代码接入。华为云PaaS
平台提供微服务引擎CSE
框架,此框架在ServiceComb
框架的基础上另外提供更多的商业功能支持。
二 、微服务引擎CSE
2.1 CSE简介
微服务引擎CSE
(Cloud Service Engine
) 是华为云PaaS
家族提供的企业级微服务应用管理平台,包含微服务SDK
(用于开发)、服务注册、配置和治理中心,帮助用户实现微服务应用的快速构建、实时监控和高可用保障。 兼容主流开源生态,不绑定特定开发框架和平台。
CSE
具备开发模式门槛低、通用性强的改造优势,并支持契约优先,服务接口统一规范管理,微服务之间的调用非常方便,根据业务的现实痛点将其后端拆分为多个微服务,并实施集群部署,这一切全部基于CSE
微服务框架开发并统一管理。
ServiceComb的学习: https://hucheng.blog.csdn.net/article/details/105991705
ServiceComb与CSE有什么不同?
CSE
是ServiceComb
的商业版本,CSE
的大部分组件来自于开源的ServiceComb
,ServiceComb
是开源的,CSE
没有开源但可以免费使用。- 使用
ServiceComb
开发的微服务不依赖华为云,使用CSE
开发的微服务则依赖华为云
为什么要用微服务引擎CSE?
在云上使用CSE
,用户无需关心自己业务之外的微服务基础设施,保证系统整体稳定性。同时微服务部署,管理、 治理全部开箱即用,还可以获得开发时期的指导和帮助,以及后续技术发展的最新信息。
2.2 搭建CSE项目
①引入依赖:
<dependency>
<groupId>com.huawei.paas.cse</groupId>
<artifactId>cse‐solution‐service‐engine</artifactId>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j‐log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.servicecomb</groupId>
<artifactId>spring‐boot‐starter‐provider</artifactId>
</dependency>
②配置文件:
APPLICATION_ID: mysoft
service_description:
name: my-service
version: 1.0.0
properties:
allowCrossApp: false
cse:
service:
registry:
address: https://cse.cn-north-1.myhuaweicloud.com
instance:
watch: false
credentials:
accessKey:
secretKey:
akskCustomCipher: default
rest:
address: 0.0.0.0:40200
③cse远程调用
@Service
public class NumCse {
protected RestTemplate restTemplate = RestTemplateBuilder.create();
public ReturnData num(int num) {
String url = "cse://my-service/num";
return restTemplate.postForObject(url, num, ReturnData.class);
}
}
2.3 CSE开发中需要注意的点
serviceComb
提供Swagger
方式生成接口契约,为防止本项目生成Swagger
契约与ServiceComb
冲突,所以之前项目的Swagger
注解都是注释掉。- 后台必须以server结尾,前端必须以web结尾,以满足网关正则表达式验证,保证路由分配正确
- 在进行开发和频繁调试和修改的情况下,尽量将微服务配置成开发者模式。如果不是开发者模式。当微服务接口变动时,启动会报错。
- 前端微服务需要在
web.xml
中增加监听,否则无法读取前端界面
- 日期格式接收与
springcloud
传输数据不一致,建议转成时间戳传输,然后在转回来 - 华为
cse
通过edge-service
网关传输不支持@PathVariable
传接数组,直接访问可以 - 华为云不支持原先
httpservletRequest
获取方式。可用filter
或context
获取方式 - 方法形参中不能有HttpServletReponse,不支持
- 日期格式
Date
的部分注解不支持
三、Edge Service
Edge Service
以开发框架的形式提供,开发者可以非常简单的搭建一个Edge Service
服务,通过简单的配置就可以定义路由转发规则。同时Edge Service
支持强大的扩展能力,服务映射、请求解析、加密解密、鉴权等逻辑都可以通过扩展实现。
3.1 搭建Edge Service
①引入依赖
<!--cse-->
<dependency>
<groupId>com.huawei.paas.cse</groupId>
<artifactId>cse‐solution‐service‐engine</artifactId>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j‐log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--edge-->
<dependency>
<groupId>org.apache.servicecomb</groupId>
<artifactId>edge‐core</artifactId>
</dependency>
②配置文件:
spring:
application:
name: my-edge
server:
port: 50201
# 应用名称
APPLICATION_ID: mysoft
# 微服务名称和版本号
service_description:
name: ${spring.application.name}
version: 1.0.0
# 服务中心和配置中心的地址
cse:
service:
registry:
address: https://cse.cn-north-1.myhuaweicloud.com
instance:
watch: false
config:
client:
serverUri: https://cse.cn-north-1.myhuaweicloud.com
refreshMode: 1
refresh_interval: 15000
# 对外发布的地址,端口号使用server.port
rest:
address: 0.0.0.0:${server.port}
# AK/SK认证信息,需要修改为自己的AK/SK
credentials:
accessKey:
secretKey:
akskCustomCipher: default
③主启动类
@SpringBootApplication
@EnableServiceComb
public class EdgeApplication {
public static void main(String[] args) throws Exception {
SpringApplication.run(EdgeApplication.class, args);
}
}
④路由配置
cse:
http:
dispatcher:
edge:
default:
enabled: true
prefix: api #请求url的前缀
withVersion: false
prefixSegmentCount: 2
url:
enabled: true
mappings:
my-service:
prefixSegmentCount: 2
path: "/api/service/.*"
withVersion: false
microserviceName: my-service
# versionRule: 1.0.0-2.0.0
上边的路由配置包括两部分,一部分为默认路由,一部分是根据具体url
配置的路由。
默认路由:
默认路由是根据 /prefix/微服务名称/*
来匹配请求url
,如果withVersion
设置为true
则根据 /prefix/微服务名称/版本号/*
来匹配请求。
prefixSegmentCount
表示前缀段的个数,由于使用/prefix/微服务名称
来匹配请求url
所以设置为2
自定义路由:
请求 /api/service/
将转发到微服务my-service
。
microserviceName
:微服务名称
versionRule
:版本匹配规则,常用于灰度发布,上边versionRule: 1.0.0-2.0.0
表示该mapping
只用于1.0.0到2.0.0版本。
3.2 过滤器
现在分布式架构中常常在网关这里通过过滤器可以校验请求的合法性,以下是Edge Service
提供过滤器定义方式:
public class AuthenticationFilter implements HttpServerFilter {
private final RestTemplate template = RestTemplateBuilder.create();
private static final Set<String> NOT_REQUIRED_VERIFICATION_SERVICE_NAMES = new HashSet<>( Arrays.asList("my-service"));
@Override public int getOrder() {
return 0;
}
@Override
public Response afterReceiveRequest(Invocation invocation, HttpServletRequestEx httpServletRequestEx) {
if (isInvocationNeedValidate(invocation.getMicroserviceName())) {
String token = httpServletRequestEx.getHeader(AUTHORIZATION);
if (StringUtils.isNotEmpty(token)) {
//校验token...
} else {
return Response.failResp( new InvocationException(Status.UNAUTHORIZED, "authentication failed, missing AUTHORIZATION header"));
}
}
return null;
}
private boolean isInvocationNeedValidate(String serviceName) {
for (String service_name : NOT_REQUIRED_VERIFICATION_SERVICE_NAMES) {
if (serviceName.startsWith(service_name)) {
return false;
}
}
return true;
}
}
配置过滤器:
过虑器配置采用Java SPI(Service Provider Interfaces)
的方式来配置,Java SPI
是通过java.util.ServiceLoader
实例化META-INF/services
下定义的接口类配置如下:
在src/main/resource
下定义META-INF/services
目录,在该目录下定义文件,文件名称为HttpServerFilter
的全限定名,如下:
文件内容是上边定义的过虑器的全限定名,如下:
com.hucheng.gateway.filter.AuthenticationFilter
四、云容器CCE
云容器引擎CCE
(Cloud Container Engine
)提供高可靠高性能的企业级容器应用管理服务,支持Kubernetes
社区原生应用和工具,简化云上自动化容器运行环境搭建。通过云容器引擎可以快速高效的将微服务部署在云端。
4.1 功能列表
CCE
涵盖了应用全生命周期管理、DevOps
持续交付、应用调度、弹性伸缩等众多功能,详细如下:
- 一站式部署和运维一键创建
Kubernetes
集群,自动化部署、运维容器应用,整个生命周期都在容器服务内一站式完成 - 高可用业务不中断集群控制面
HA
和跨AZ
高可用,容器应用优雅伸缩,安全下线,保障业务不掉线 - 丰富的应用调度策略支持多种亲和反亲和调度策略,用户可方便地根据应用特点在高性能和高可靠中找到平衡点。
- 灵活的弹性伸缩策略 支持按性能、按时间、按周期的弹性伸缩策略,用户可自由组合策略以应对多变的突发浪涌
- 兼容原生
Kubernetes
和Docker
紧跟社区,3个月同步最新版本,兼容原生API
和命令行 - 可定制化的
DevOps
能力 支持Java
/Python
/Go
/Node.JS
/Vert.x
等语言代码开发一键式生成镜像能力 IaaS
资源深度整合 直接使用华为云ECS
/BMS
、网络(VPC
/EIP
)、存储(EVS
/OBS
/SFS
)能力
4.2 产品优势
CCE
基于业界主流的Docker
和Kubernetes
开源技术,并进行了大量的商用增强,在系统可靠性、高性能、开源社区的兼容性等多个方面具有独特的优势。
- 简单易用:自动化创建容器集群,一站式部署/运维容器应用,一键式滚动升级
- 高性能:自研高性能容器网络,秒级自动弹性伸缩,支持高性能裸金属容器私有集群
- 企业级:集群控制面
HA
和跨AZ
高可用,容器应用优雅伸缩,安全下线,保障业务不掉线 - 开放性:全兼容
Kubernetes
/Docker
社区原生版本,CNCF
首批认证的Kubernetes
服务提供商,社区的主要贡献者
更多推荐
所有评论(0)