Apache ServiceComb适配鲲鹏生态开源验证任务
1. 背景介绍
开源for Huawei 通过和公司、高校、社区的开发者合作,完成鲲鹏、昇腾、欧拉、鸿蒙、高斯、云服务等与开源软件的适配开发,帮助繁荣Huawei的基础生态,同时让开源软件能够更加简单、高效的运行于华为云上。
Apache ServiceComb是一个实现Open API规范的RPC框架,提供了配置管理、服务发现、动态路由、可观察性和服务治理功能。
- 源码地址:https://github.com/apache/servicecomb-java-chassis
- 官网主页:https://servicecomb.apache.org/
- 主要开发语言:JAVA
- LICENSE:Apache 2.0
- 维护者:Apache ServiceComb PMC
- 项目数据:Fork 810K, Star 1.9K, Contributor 133,最近一次提交:2024-10-11
- star历史(https://star-history.com/):
体验项目基于Apache ServiceComb Fence , 并针对For Huawei场景进行了少量优化。ServiceComb Fence是包含Java Chassis 3最佳实践的应用开发脚手架,它可以帮助开发者快速构建包含微服务后端、微服务前端和基础原子服务的项目工程。
基于Fence,可以快速构建一个韧性、安全和敏捷的微服务项目工程。Fence的核心设计包括韧性架构、安全认证、可观测性、过载防护等方面,它主要由如下几个微服务组成:
- edge-service: 微服务网关。微服务网关负责接收用户的请求,并将请求转发给对应的微服务前端和微服务后端进行处理。微服务网关还负责认证鉴权、过载防护等方面的系统功能。
- authentication-server: 认证服务。认证服务提供基于Oauth2的认证能力,实现了基础的用户、角色管理,认证和授权等功能。
- resource-server: 资源服务。资源服务是一个示例项目,用户新开发的服务都属于资源服务,这个服务可以作为新增服务的模板。 资源服务实现了一些基础的鉴权功能,提供基于Yaml配置和Java Annotation声明的权限管理机制。
- admin-service: 微服务管理服务。微服务管理服务提供微服务管理和系统运维功能。包括管理和查看服务列表、管理和查看服务配置、系统问题分析和定位能力。
- admin-website: 微服务管理服务的前端。这是一个基于OpenTiny 开发的静态页面服务,实现微服务管理服务的Web前端。 它可以作为用户新增前端的模板,提供了基础的Web前端开发框架,包括菜单、导航等方便阅读和扩展的代码框架。
Fence还依赖中间件服务Zookeeper和数据库GuassDB。其部署示意图如下:
Fence项目遵循约定优于配置原则,定义了日志配置、Web配置、路由配置、代码结构等相关规范,以更加简洁的实现可观测性、过载防护等功能。
2.项目过程
本项目体验过程可以不修改代码,用户使用前需要了解华为云相关服务的常用操作,包括:CodeArts,CCE,SWR,ECS,GaussDB。
- 使用CodeArts的CICD完成编译构建并发布微服务镜像服务。
- 在CCE的控制台拉取镜像加载微服务,通过环境变量的配置加载必要的。
- 使用GaussDB初始化用户列表。
2.1 资源开通和规格信息
GaussDB版本说明
产品名称 | 产品类型 | 数据库引擎版本 | 内核引擎版本 | 实例类型 | 部署形态 | 备注 |
---|---|---|---|---|---|---|
云数据库 GaussDB | 基础版 | V2.0-8.* | 505.1.* | 集中式 | 1主2备 | 推荐 |
云数据库 GaussDB | 企业版 | V2.0-8.* | 505.1.* | 分布式版 | 独立部署 |
容器版本说明
产品名称 | 集群类型 | 集群版本 | 集群规模 | 备注 |
---|---|---|---|---|
云容器引擎 CCE | CCE Turbo 集群 | V1.29 | 50 | 推荐 |
云容器引擎 CCE | CCE Standard 集群 | V1.29 | 50 |
ECS版本说明
产品名称 | CPU架构 | 实例类型 | 公共镜像 | 镜像版本 | 备注 |
---|---|---|---|---|---|
弹性云服务器 | 鲲鹏计算 | 鲲鹏通用计算增强型 | Huawei Cloud EulerOS | Huawei Cloud EulerOS 2.0 标准版 64位 ARM版(10GiB) | 推荐 |
【注】:建议4v 16G配置,在实验时,较低的配置导致负载部署失败。
GaussDB开源贡献驱动版本
语言 | 名称 | 版本 | 备注 |
---|---|---|---|
Java | org.opengauss:opengauss-jdbc | 5.1.0-og | 目前GaussDB未提供中央仓可获取的JDBC驱动,暂时使用OpenGauss提供的驱动 |
2.2 使用CodeArts的CICD完成华为云部署
【前提条件】
开源代码地址:https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiDemoJava.git
完成数据库初始化,在GaussDB里执行代码库里的user.sql文件,文件目录:authentication-server/src/main/resources/sql/user.sql
【新建项目】
项目是使用CodeArts各服务的基础,创建项目后才能完成后续操作。
- 打开
软件开发生产线(CodeArts)
->前往工作台
->新建项目
。 - 选择
Scrum
,输入项目名称OpenSourceForHuaweiDemoJava
。
【构建并推送镜像】
通过编译构建任务将软件的源代码编译成镜像,并把镜像推送归档到容器镜像服务(SWR)中。
- 打开
持续交付
->编译构建
->新建任务
,配置构建任务。
下一步选择模板,使用 系统模板
-> Maven
。
-
配置构建步骤
构建步骤保留
构建环境配置
、代码下载配置
、maven构建
、制作镜像并推送到SWR仓库
。构建环境配置:构建环境主机类型,选择
鲲鹏(ARM)服务器
,执行主机选择内置执行机
。代码下载配置:缺省。
maven构建:工具版本
maven3.8.5-jdk17
或者以上版本, setting配置选择国内站点
, 仓库地址配置为 https://mirrors.huaweicloud.com/repository/maven/。制作镜像并推送到SWR仓库:需要增加
edge-service
、authentication-server
、resource-server
、admin-service
、admin-website
5个条目。
完成配置,单击“保存并执行”。等待任务执行完毕,在镜像仓库会生成上述5个微服务的镜像。镜像内容可以通过 容器镜像服务
-> 我的镜像
进行查看。
【注】:本项目资源开通均在华北-北京四,SWR也选在华北-北京四。
【创建负载】
在云容器引擎(CCE)中创建无状态负载(Deployment),部署 edge-service
、authentication-server
、resource-server
、admin-service
、admin-website
、zookeeper
6个微服务。
创建 Zookeeper
- 进入
云容器引擎(CCE)
控制台,点击准备工作中已经购买的集群,进入详情页。进入工作负载
->创建工作负载
。 - 工作负载基础信息:
配置类别 | 配置项 | 值 |
---|---|---|
基本信息 | 负载类型 | 无状态负载 |
基本信息 | 负载名称 | zookeeper |
基本信息 | 实例数量 | 1 |
容器配置 | 基本信息-镜像名称 | 从镜像中心选择 zookeeper |
容器配置 | 基本信息-更新策略 | 总是拉取镜像 |
容器配置 | 基本信息-镜像版本 | latest |
服务配置 | 访问类型 | 集群内访问 |
服务配置 | 容器端口 | 2181 |
服务配置 | 服务端口 | 2181 |
创建 edge-service
- 进入
云容器引擎(CCE)
控制台,点击准备工作中已经购买的集群,进入详情页。进入工作负载
->创建工作负载
。 - 工作负载基础信息:
配置类别 | 配置项 | 值 |
---|---|---|
基本信息 | 负载类型 | 无状态负载 |
基本信息 | 负载名称 | edge-service |
基本信息 | 实例数量 | 1 |
容器配置 | 基本信息-镜像名称 | 从我的镜像选择 edge-service |
容器配置 | 基本信息-更新策略 | 总是拉取镜像 |
容器配置 | 基本信息-镜像版本 | v1.1 |
容器配置 | 环境变量-ZK_ADDRESS | 填写zookeeper的访问地址,比如 10.247.254.192:2181 |
服务配置 | 访问类型 | 负载均衡 |
服务配置 | 负载均衡器 | 共享型,创建一个共享型负载均衡器 |
服务配置 | 容器端口 | 9090 |
服务配置 | 服务端口 | 9090 |
创建 authentication-server
、resource-server
、admin-service
、admin-website
- 进入
云容器引擎(CCE)
控制台,点击准备工作中已经购买的集群,进入详情页。进入工作负载
->创建工作负载
。 - 工作负载基础信息:(DB三个环境变量仅authentication-server需要配置)
配置类别 | 配置项 | 值 |
---|---|---|
基本信息 | 负载类型 | 无状态负载 |
基本信息 | 负载名称 | 具体名称 |
基本信息 | 实例数量 | 1 |
容器配置 | 基本信息-镜像名称 | 从我的镜像选择具体镜像 |
容器配置 | 基本信息-更新策略 | 总是拉取镜像 |
容器配置 | 基本信息-镜像版本 | v1.1 |
容器配置 | 环境变量-ZK_ADDRESS | 填写zookeeper的访问地址,比如 ip:2181 |
容器配置 | 环境变量-DB_URL | GaussDB URL,比如:jdbc:opengauss://ip:port/postgres?currentSchema=authentication_server_db |
容器配置 | 环境变量-DB_USERNAME | GaussDB 用户名 |
容器配置 | 环境变量-DB_PASSWORD | GaussDB 密码 |
注意:请查看具体微服务的 application.yml
文件,了解数据库环境变量的名称。不同的服务可能会有差异。 如果名称为 db.url
,那么环境变量需要指定为 db_url
。 建议配置文件名称使用大写的方式,和环境变量命名规范一致,比如 DB_URL
。
【查看部署结果和进行接口验证】
打开新的浏览器页面,输入 http://{IP}:9090/ui/admin/
进入登录页面,其中IP为edge-service负载均衡的公网地址。登录后会出现如下界面:
打开 系统运维
-> 接口测试
菜单,可以对开源任务增加的 REST 接口进行测试。
2.3 后续工作
您可以使用CodeArts 部署镜像
、流水线
等功能将上述构建、部署过程实现自动化,在代码变更的时候,一键式触发应用部署更新。 本文不再描述相关步骤。
- 点赞
- 收藏
- 关注作者
评论(0)