apollo适配华为云&Gaussdb

举报
yd_243587097 发表于 2024/12/10 16:51:00 2024/12/10
【摘要】 介绍一下apollo适配华为云的具体步骤和一些出现的问题

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

任务的目的

因为华为云采用了自己的cpu指令集和操作系统,所以可能有些软件不适配。所以诞生了此次任务。我领取的任务就是新建一个使用apollo的项目,首先需要fork apollo的项目,进行适配工作,将配置存储在Gaussdb中,

然后在开发demo,测试是否apollo中的配置,是否生效。

报名流程

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

开发代码

  • fork apollo的仓库,适配存储gaussdb的逻辑。
  • 华为云提供了官方demo(https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiDemoJava/overview),首先在自己的账号下导入仓库。
  • 在demo中开发接口,使用apollo中的配置,测试是否可用

适配工作

  • 将mysql的语法,转化为Gaussdb的语法,这里需要注意的几点是
  • 1. 表名的大小写,mysql默认是大小写不敏感的,Gaussdb是敏感的
    
    2. Gaussdb索引是全局唯一的。
    
    我已经适配好了,如下:
    
    项目:https://github.com/wusiamn/apollo
    
    分支:dev_temp_apollo
  • 将数据库连接修改为Gaussdb,需要修改admin-service,config-service,portal三个模块的,.application-github.properties文件,三个模块portal对应的schema是ApolloPortalDB,其他两个是ApolloConfigDB,配置如下:
  • spring.datasource.url=jdbc:opengauss://ip:port/apollo?currentSchema=ApolloPortalDB
    spring.datasource.username=root
    spring.datasource.password=pwd
    spring.datasource.driver-class-name=org.opengauss.Driver
    spring.jpa.database-platform=org.hibernate.dialect.PostgreSQL95Dialect
    spring.jpa.properties.hibernate.default_schema=`ApolloPortalDB`
  • Gaussdb是字母大小写敏感的, 所以需要配置jpa的属性,将其修改为敏感,在application.properties配置如下:
    spring.jpa.hibernate.globally_quoted_identifiers=true
    spring.jpa.properties.hibernate.globally_quoted_identifiers=true

遇到的问题

问题1:手动创建日志文件夹

om.ctrip.framework.apollo.configservice.ConfigServiceApplication.main(ConfigServiceApplication.java:52)
2024-11-18 19:55:32.571 ERROR 56623 --- [           main] o.s.boot.SpringApplication               : Application run failed

java.lang.IllegalStateException: java.lang.IllegalStateException: Logback configuration error detected: 
ERROR in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - Failed to create parent directories for [/opt/logs/apollo-configservice.log]
ERROR in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - openFile(/opt/logs/apollo-configservice.log,true) call failed. java.io.FileNotFoundException: /opt/logs/apollo-configservice.log (No such file or directory)

解决方案:手动创建日志文件夹,并配置读写权限

问题2:访问本地,需要配置local.meta

java.lang.IllegalArgumentException: Not enough variable values available to expand 'fat_meta'
	at org.springframework.web.util.UriComponents$VarArgsTemplateVariables.getValue(UriComponents.java:370)
	at org.springframework.web.util.UriComponents.expandUriComponent(UriComponents.java:263)
	at org.springframework.web.util.HierarchicalUriComponents$PathSegmentComponent.expand(HierarchicalUriComponents.java:995)
	at org.springframework.web.util.HierarchicalUriComponents.expandInternal(HierarchicalUriComponents.java:440)

解决:

local.meta=http://localhost:8080
dev.meta=${dev_meta}
fat.meta=${fat_meta}
uat.meta=${uat_meta}
lpt.meta=${lpt_meta}
pro.meta=${pro_meta}

问题3:某个表不存在

解决:因为大小写敏感问题,配置jpa属性如下:

spring.jpa.hibernate.globally_quoted_identifiers=true
spring.jpa.properties.hibernate.globally_quoted_identifiers=true

问题4:spring_session表不存在

解决:这是spring 默认操作的表,没有连接schema,无法操作,不予解决。

问题5:apollo收藏操作失败

解决:apollo虽然使用了jpa,但是使用大量mysql的特殊函数,所以除非修改apollo源码,暂不予解决。

问题5:demo中如何获取token

解决:访问:http://ip:8070/open/add-consumer.html,填写上面的信息后,会自动生成token

上云第一步-购买Gaussdb

第二步-购买ECS

    成果访问

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

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

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

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

    评论(0

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

    全部回复

    上滑加载中

    设置昵称

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

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

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