druid适配华为云&Gaussdb

举报
yd_243587097 发表于 2024/11/08 11:46:15 2024/11/08
【摘要】 前一阵,适配了Mybatis(https://bbs.huaweicloud.cn/blogs/437134)。在华为云开源共创平台,还有一些组件, 今天就来适配druid任务的目的因为华为云采用了自己的cpu指令集和操作系统,所以可能有些软件不适配。所以诞生了此次任务。我领取的任务就是新建一个使用mybatis的项目,在华为云上部署,看看适配能够正常运行。报名流程在喜欢的任务上进行报名,...

前一阵,适配了Mybatis(https://bbs.huaweicloud.cn/blogs/437134)。在华为云开源共创平台,还有一些组件, 今天就来适配druid

任务的目的

因为华为云采用了自己的cpu指令集和操作系统,所以可能有些软件不适配。所以诞生了此次任务。我领取的任务就是新建一个使用mybatis的项目,在华为云上部署,看看适配能够正常运行。

报名流程

  1. 在喜欢的任务上进行报名,填写自己的申请,留下自己的邮箱,之后华为官方会发送任务计划书到邮箱内。
  2. 开通开发者空间,进行实名认证,加入沃土云创计划个人方向。
  3. 进入激励管理》开源共创,进入任务,此时在需求分析节点,提交之前发送到邮箱内的任务计划书。
  4. 提交任务计划书之后,审批后进入开发阶段,阅读任务计划书,了解需要开发的内容。
  5. 此时需要申领服务器,主要是Gaussdb,华为云ECS。
  6. 开发完整之后,在ECS上进行验证。
  7. 测试完成后,可以申请任务验收。将自己的代码分支博文等信息打包成zip文件进行上传。

开发代码

  • 华为云提供了官方demo(https://gitcode.com/HuaweiCloudDeveloper/servicecomb-fence/overview),首先在自己的账号下导入仓库。
  • 现在这个项目是在Mybatis上改的,一些基础的类,例如student已经存在了。所以就不需要再写了
  • 我的项目https://gitcode.com/wsm921225/opensource-demo-druid-241106/overview,分支dev_druid

开发思路

官方demo是基于servicecomb集成的,也是基于spring boot的项目,但是提供了很多新特性。demo分为多个模块,主要是前端服务,网关服务,和后端服务,

主要集成是在后端的服务中,思路是添加druid的依赖和配置,启动项目,在ecs上执行,测试是否可行。

添加依赖

本来是想集成Mybatis starter和druid的starter的,但是冲突太多了,所以去掉了Mybatis的starter进行测试,引入包,主要是druid的starer和OpenGauss的驱动,并在properties文件中启用druid

<dependency>
      <groupId>org.opengauss</groupId>
      <artifactId>opengauss-jdbc</artifactId>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid-spring-boot-starter</artifactId>
      <version>1.2.23</version>
    </dependency>

applition.yml配置:

spring:
  datasource:
    druid:
      url: jdbc:opengauss://ip:port/postgres?currentSchema=class # WARNING: please change ip and port
      username: root
      password: root
      driver-class-name: org.opengauss.Driver

      initial-size: 5
      min-idle: 5
      max-active: 20
      max-wait: 60000
      time-between-eviction-runs-millis: 60000
      min-evictable-idle-time-millis: 300000
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      pool-prepared-statements: true
      max-pool-prepared-statement-per-connection-size: 20

      stat-view-servlet:
        enabled: true
        login-password: admin
        login-username: admin
        url-pattern: /druid/*

配置Datasource

public class DruidConfig {

    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.druid")
    public DataSource druidDataSource() {
        return new DruidDataSource();
    }
}

关键代码

public class StudentRepository {

    @Autowired
    private DataSource dataSource;


    public Student getStudentById(int id) {
        String sql = "SELECT AGE, NAME, CLASS_ID FROM student WHERE id = ?";
        Student student = null;

        try (Connection connection = dataSource.getConnection();
             PreparedStatement preparedStatement = connection.prepareStatement(sql)) {

            preparedStatement.setInt(1, id);
            ResultSet resultSet = preparedStatement.executeQuery();

            if (resultSet.next()) {
                student = new Student();
                student.setAge(resultSet.getInt("AGE"));
                student.setName(resultSet.getString("NAME"));
                student.setClassId(resultSet.getLong("CLASS_ID"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return student;
    }
}

上云第一步-购买Gaussdb

第二步-购买ECS

    成果访问

    访问 http://公网ip/ui/admin/  点击登录按钮后,页面显示如下

    现在的demo已经集成了接口测试,直接测试就行

    自此,成功完成druid对接华为云的任务。

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

    评论(0

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

    全部回复

    上滑加载中

    设置昵称

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

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

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