apollo适配华为云&Gaussdb
【摘要】 介绍一下apollo适配华为云的具体步骤和一些出现的问题
前一阵,适配了Mybatis(https://bbs.huaweicloud.com/blogs/437134)。在华为云开源共创平台,还有一些组件, 今天就来适配apollo
任务的目的
因为华为云采用了自己的cpu指令集和操作系统,所以可能有些软件不适配。所以诞生了此次任务。我领取的任务就是新建一个使用apollo的项目,首先需要fork apollo的项目,进行适配工作,将配置存储在Gaussdb中,
然后在开发demo,测试是否apollo中的配置,是否生效。
报名流程
- 在喜欢的任务上进行报名,填写自己的申请,留下自己的邮箱,之后华为官方会发送任务计划书到邮箱内。
- 开通开发者空间,进行实名认证,加入沃土云创计划个人方向。
- 进入激励管理》开源共创,进入任务,此时在需求分析节点,提交之前发送到邮箱内的任务计划书。
- 提交任务计划书之后,审批后进入开发阶段,阅读任务计划书,了解需要开发的内容。
- 此时需要申领服务器,主要是Gaussdb,华为云ECS。
- 开发完整之后,在ECS上进行验证。
- 测试完成后,可以申请任务验收。将自己的代码分支博文等信息打包成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)