Apache ServiceComb集成MyBatis使用GaussDB开源体验任务过程
1、项目介绍:
Apache ServiceComb是一个实现Open API规范的RPC框架,提供了配置管理、服务发现、动态路由、可观察性和服务治理功能。本任务的主要目的是帮助开源开发者体验开源for Huawei的过程,并熟悉GaussDB基础的开发能力。开发者需要在DEMO基础上,集成Mybatis框架并访问GaussDB。
- 源码地址: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/):
DEMO的部署架构图如下:
2、准备工作:
开始之前,开发者可以下载 开源for Huawei Wiki(https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiWiki/overview) 了解详细的开发步骤,技术准备,以及开发过程需要的各种资源。
2.1 资源准备
- 本地下载安装:gitbash、jdk、maven(maven3.8.5-jdk17 或者以上版本)ide、Zookeeper;
- 注册开通:gitcode账号(https://gitcode.com/);
- 华为云官网-控制台开通资源(https://console.huaweicloud.com/):
- 配置-CodeArts(体验版本);
- 购买-弹性云服务器ECS;
- 购买-云容器引擎 CCE;
- 购买-Gauessdb;
2.2 资源配置要求
CCE
产品名称 |
集群类型 |
集群版本 |
集群规模 |
云容器引擎CCE |
Turbo集群 |
V1.29 |
50 |
ECS
产品名称 |
CPU架构 |
实例类型 |
公共镜像 |
镜像版本 |
弹性云服务器 |
鲲鹏计算 |
鲲鹏通用计算增强型 |
Huawei Cloud EulerOS |
Huawei Cloud EulerOS 2.0标准版 64位 ARM版(10GiB) |
GaussDB
产品名称 |
产品类型 |
数据库引擎版本 |
内核引擎版本 |
实例类型 |
部署形态 |
云数据库GaussDB |
基础版 |
V2.0-8.* |
505.1.* |
集中式 |
1主2备 |
3、 项目开发、构建:
3.1克隆仓库
3.1.1 gitcode创建SSH公钥:
3.1.2 克隆项目:
示例项目forkJava到自己的仓库。(示例项目:https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiDemoJava.git)
3.1.3 基于克隆项目进行修改、开发、测试:
3.2代码开发
authentication-server依赖数据库,找到 src/resource/sql/user.sql,在数据库执行该初始化脚本。
3.2.1 新增表
CREATE TABLE T_USER_TEST (
ID SERIAL NOT NULL,
USER_NAME VARCHAR(64) NOT NULL,
AGE TINYINT NOT NULL,
PRIMARY KEY (ID)
);
3.2.2创建实体类
\OpenSourceForHuaweiDemoJava\resource-server\src\main\java\org\apache\servicecomb\fence\entity下创建实体User
import lombok.Data;
import java.io.Serializable;
@Data
public class User implements Serializable {
private Long id;
private String userName;
private int age;
}
\OpenSourceForHuaweiDemoJava\resource-server\src\main\java\org\apache\servicecomb\fence\ mapper下新建Mapper
@Mapper
public interface IUserMapper {
@Insert("INSERT INTO T_USER_TEST(USER_NAME, AGE) VALUES (#{userName}, #{age})")
@Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
int save(User user);
@Update("UPDATE T_USER_TEST SET USER_NAME = #{userName},age = #{age} WHERE id = #{id}")
int update(User user);
@Select("SELECT * FROM T_USER_TEST WHERE ID = #{id}")
@Results(@Result(property = "userName", column = "USER_NAME"))
User queryById(long id);
resource-server-api\src\main\java\org\apache\servicecomb\fence\api\resource下新建UserService接口、新建Endpoint实现
resource-server中的yml文件,增加数据库相关配置信息
spring:
datasource:
url: ${DB_URL:jdbc:opengauss://ip:8000/数据库名称?currentSchema=Schema名称}
username: ${DB_USERNAME:数据库登录账号}
password: ${DB_PASSWORD: 数据库登录密码}
driver-class-name: org.opengauss.Driver
mybatis:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
map-underscore-to-camel-case: true
本地进行测试,提交代码仓库
3.3构建并推送镜像
3.3.1通过华为云CodeArts进行编辑构建,详细配置可参考:
3.4结果验证
在edge-service部署后的负载均衡查看ip地址,浏览器打开: http://ip地址:9090/ui/admin/
接口验证:
- http://xxxx:9090/api/resource/v1/user/method/add
- http://xxxx:9090/api/resource/v1/user/method/update
- http://xxxx:9090/api/resource/v1/user/method/query/{id}
- 点赞
- 收藏
- 关注作者
评论(0)