服务标识,既每个服务全局可辨识的唯一标识,统一和规范的目的是:
我们将从3个角度去规范'服务标识',分别是 GAV、Spring、Metadata
以下所有[例子]中,假设:
[应用] | commonservice |
[服务] | sms |
[模块] | server |
[版本] | 1.0.0 |
注意:
maven的GAV,细到每个模块,pom.xml中使用:https://maven.apache.org/guides/mini/guide-naming-conventions.html
groupId=[应用].[服务]
artifactId=[应用]-[服务]-[模块]
version=[版本]
|
root package = groupId.[模块]
此模块中的代码 root package = commonservice.sms.server
spring boot 原生配置 application.properties / application-${env}.properties
spring.application.name=[应用]-[服务]
spring.application.version=[版本]
|
元数据,这里使用 eureka 的 metadata:http://cloud.spring.io/spring-cloud-netflix/spring-cloud-netflix.html
使用了eureka的项目就能加metadata
但还是推荐使用微服务框架,并且版本 >= 1.5.2 的使用
这样 统一控制中心(uniconsole) 才能收集和使用这些信息
说明:红色是必须手动填写,蓝色是有条件性手动填写,黑色是可选填写,绿色是框架自动填写可被覆盖,
eureka.instance.metadataMap.layerId=[层]
eureka.instance.metadataMap.groupId=[应用]
eureka.instance.metadataMap.groupName=[所在应用 api gateway 的 ${spring.application.name},使用 api gateway 的必须加上。容器必填,非容器必不填]
eureka.instance.metadataMap.applicationId=[服务]
eureka.instance.metadataMap.isApiGateway=[当前服务是否 api gateway:true/false],默认false
eureka.instance.metadataMap.owner=[owner域账号]
eureka.instance.metadataMap.owner.fullname=[owner姓名全拼]
eureka.instance.metadataMap.version=[灰度版本,默认填写1.0]
eureka.instance.metadataMap.version.application=[服务版本 ${spring.application.version}]
eureka.instance.metadataMap.version.framework=[框架版本 pom中引入的微服务框架版本]
eureka.instance.metadataMap.type.deploy=[部署方式: docker/ecs,由业务线填写,如果没写则1.5.6及以上版本框架会自动填写,值为 : new File("/.dockerenv").exists() ? "docker" : "ecs" ,但1.5.6以下的版本还需要手动填写]
eureka.instance.metadataMap.git.url=[git地址]
eureka.instance.metadataMap.git.commitId=[git commit id,不用填写]
eureka.instance.metadataMap.admin.enabled=[是否启动admin:true/false],默认true
eureka.instance.metadataMap.admin.notify.dingding=[通知发送-钉钉url]
eureka.instance.metadataMap.startuptime=[启动时间,不用填写,通过 bootstrap 阶段获取]
eureka.instance.metadataMap.compatible.disconf.app=[兼容: 优先选择这个配置作为本服务在 disconf 里的APP名称]
eureka.instance.metadataMap.compatible.disconf.version=[兼容: 优先选择这个配置作为本服务在 disconf 里的version]
eureka.instance.metadataMap.compatible.restart.app=[兼容: 优先选择这个配置作为本服务在 冷重启里的APP名称]
eureka.instance.metadataMap.compatible.oms.app=[兼容: 优先选择这个配置作为本服务在 oms 里的APP名称]
eureka.instance.metadataMap.static.dependencies=[启动时由server-core自动插入,显示当前服务引入了多少框架api的包](逗号分隔)
eureka.instance.metadataMap.control.port=[1.5.6框架添加,低于1.5.6的框架忽略,默认为64444,用来设置管理端口号](逗号分隔)
eureka.instance.metadataMap.dependencies=[运行时由server-core自动同步,显示当前服务在运行时依赖哪些服务](逗号分隔)
eureka.instance.metadataMap.dependencied=[运行时由server-core自动同步,显示当前服务在运行时被哪些服务依赖](逗号分隔)
eureka.instance.metadataMap.layerId=common
eureka.instance.metadataMap.groupId=commonservice
eureka.instance.metadataMap.applicationId=sms
eureka.instance.metadataMap.isApiGateway=
false
eureka.instance.metadataMap.owner=xxx
eureka.instance.metadataMap.owner.fullname=xxx
eureka.instance.metadataMap.version=
1.0
eureka.instance.metadataMap.version.application=
1.0
.
0
eureka.instance.metadataMap.version.framework=
1.5
.
2
eureka.instance.metadataMap.type.deploy=docker
eureka.instance.metadataMap.git.url=https:
//xxx
eureka.instance.metadataMap.git.commitId=[git commit id]
eureka.instance.metadataMap.admin.enabled=
true
eureka.instance.metadataMap.admin.notify.dingding=[钉钉机器人url]
eureka.instance.metadataMap.bootstrap.startuptime=[启动时间]
eureka.instance.metadataMap.compatible.disconf.app=[sms]
eureka.instance.metadataMap.compatible.disconf.version=[
1.0
.
0
]
eureka.instance.metadataMap.compatible.restart.app=[sms]
eureka.instance.metadataMap.
static
.dependencies=[启动时由server-core自动插入,显示当前服务引入了多少框架api的包](逗号分隔)
eureka.instance.metadataMap.control.port=[
1.5
.
6
框架添加,低于
1.5
.
6
的框架忽略,默认为
64444
,用来设置管理端口号](逗号分隔)
eureka.instance.metadataMap.dependencies=[运行时由server-core自动同步,显示当前服务在运行时依赖哪些服务](逗号分隔)
eureka.instance.metadataMap.dependencied=[运行时由server-core自动同步,显示当前服务在运行时被哪些服务依赖](逗号分隔)
|
标识规范将由 脚手架服务(Framework Archetype)在创建项目时自动生成
配置检查工具,将在 pipeline 时进行检测,发现不符合规范视情况决定 邮件通知 和/或 build失败