Apache ServiceComb集成MyBatis使用GaussDB开源体验任务过程

举报
yd_254814505 发表于 2024/12/23 14:18:10 2024/12/23
【摘要】 开源For Huawei(https://developer.huaweicloud.cn/programs/opensource/contributing/)通过和公司、高校、社区的开发者合作,完成鲲鹏、昇腾、欧拉、鸿蒙、高斯、云服务等与开源软件的适配开发,帮助繁荣Huawei的基础生态,同时让开源软件能够更加简单、高效的运行于华为云上。

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/):

1.png

DEMO的部署架构图如下:

图片1.png

2、准备工作:

开始之前,开发者可以下载 开源for Huawei Wikihttps://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiWiki/overview) 了解详细的开发步骤,技术准备,以及开发过程需要的各种资源。

2.1 资源准备

  1. 本地下载安装:gitbashjdkmavenmaven3.8.5-jdk17 或者以上版本)ideZookeeper
  2. 注册开通:gitcode账号(https://gitcode.com/);
  3. 华为云官网-控制台开通资源(https://console.huaweicloud.cn/):
    1. 配置-CodeArts(体验版本);
    2. 购买-弹性云服务器ECS;
    3. 购买-云容器引擎 CCE;
    4. 购买-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进行编辑构建,详细配置可参考:

华为云提供的文档:https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiWiki/blob/main/zh_CN/docs/cicd-pipeline.md

3.4结果验证

edge-service部署后的负载均衡查看ip地址,浏览器打开: http://ip地址:9090/ui/admin/

图片2.png

接口验证:

图片3.png


  • 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}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。