微服务中规范往往比代码更加重要,一些良好的规范,能让我们少走弯路。mica-launcher
启动器就是对服务名和服务环境进行了定制的处理,使得企业开发更加方便快捷。
服务名在微服务中起着至关重要的位置,一个好的服务名应该见名知意。下面是笔者在工作中总结的规范。
例如:user-api
第一级 服务名
第二级 服务类型
将组名放到第一位,方便快速定位到技术组。
例如:mica-user-api
第一级 组名
第二级 服务名
第三级 服务类型
启动器的使命就是让我们的 jar 在各种环境中都可以方便启动,不用添加过多的配置,减少学习成本,能快速上手。
环境划分环境变量配置dev(开发)、test(测试)、ontest(线上测试)、prod(正式),默认dev
mica-launcher 最早的雏形初现在笔者的一些 JFinal 项目中,期初主要是为了适应开发阶段的 jetty 和正式环境的 tomcat 日志目录。
在 Spring boot 中我便设计了 mica-launcher 来处理服务环境,使其更加方便好用。
使用起来比原生的 spring boot
启动器里多了一个服务名参数,微服务中服务名对一个服务特别重要,故在启动器启动时写死。
net.dreamlu mica-launcherGradle
implementation "net.dreamlu:mica-launcher"
{ ([] ) { .(, ., ); }}
注意:使用了 mica-launcher
启动器,需要结合 mica-test
进行单元测试,具体文章请查看 mica test 单元测试。
代码中可以采用注入 MicaProperties
来读取启动器中的一些变量,比如 env
等。mica.prop
可以在配置文件中自定义配置
。然后再在代码中使用 MicaProperties
读取。
如梦技术https//www.dreamlu.net配置读取
; () { .(); .(); }
启动器的主要目的是能更加方便的去注入一些通用配置,降低使用难度。mica-log4j2
就是一个启动器的扩展。
插件扩展基于 java SPI 技术,关于 java SPI 具体使用可以百度。
下面是 LauncherService 的代码。
{ ( , , , , );}编写 SPI 文件放置到 resources 目录下
文件路径和文件名 META-INF/services/net.dreamlu.mica.launcher.LauncherService
。
内容为你编写的插件完整类名,例如:net.dreamlu.mica.log.LogLauncherServiceImpl
。
mica-launcher
中我们预制了环境变量,您可以再服务里将配置中心按环境来划分域名。在配置中可以使用 ${mica.env} 占位符完成配置。
config-dev.dreamlu.vipconfig-test.dreamlu.vip......
https//config-$mica.env.dreamlu.vip