mica-launcher 微服务启动器的设计和使用
前言
微服务中规范往往比代码更加重要,一些良好的规范,能让我们少走弯路。mica-launcher
启动器就是对服务名和服务环境进行了定制的处理,使得企业开发更加方便快捷。
服务名规范
服务名在微服务中起着至关重要的位置,一个好的服务名应该见名知意。下面是笔者在工作中总结的规范。
小开发团队-两级
例如:user-api
- 第一级 服务名
- 第二级 服务类型
多个开发团队-三级
将组名放到第一位,方便快速定位到技术组。
例如:mica-user-api
- 第一级 组名
- 第二级 服务名
- 第三级 服务类型
环境划分
愿景
启动器的使命就是让我们的 jar 在各种环境中都可以方便启动,不用添加过多的配置,减少新同学的学习成本,能快速上手。提供了环境的日志打印,避免启动期间的各种问题。
环境划分
dev(开发)、test(测试)、ontest(线上测试)、prod(正式),默认dev
启动环境变量
java命令行:
java -jar app.jar --spring.profiles.active=dev
JAVA_OPS
set JAVA_OPTS="-Dspring.profiles.active=test"
标注方式(代码层面,junit单元测试非常实用)
@ActiveProfiles({"junittest","productprofile"})
ENV方式
系统环境变量 SPRING_PROFILES_ACTIVE(注意:是大写)
背景故事
mica-launcher 最早的雏形初现在笔者的一些 JFinal 项目中,期初主要是为了适应开发阶段的 jetty 和正式环境的 tomcat 日志目录。
在 Spring boot 中我便设计了 mica-launcher 来处理服务环境,使其更加方便好用。
使用
使用起来比原生的 spring boot
启动器里多了一个服务名参数,微服务中服务名对一个服务特别重要,故在启动器启动时写死。
Maven
<dependency> <groupId>net.dreamlu</groupId> <artifactId>mica-launcher</artifactId> </dependency>
Gradle
implementation "net.dreamlu:mica-launcher"
@SpringBootApplication public class MicaExampleApplication { public static void main(String[] args) { MicaApplication.run("mica-example", MicaExampleApplication.class, args); } }
注意:使用了 mica-launcher
启动器,需要结合 mica-test
进行单元测试,具体文章请查看 mica test 单元测试。
启动器自动化配置
代码中可以采用注入 MicaProperties
来读取启动器中的一些变量,比如 env
等。mica.prop
可以在配置文件中自定义配置
。然后再在代码中使用 MicaProperties
读取。
配置项 | 默认值 | 说明 |
---|---|---|
mica.env | dev | 【只读】mica 环境变量,方便在代码中获取,设置无效. |
mica.is-local | false | 【只读】判断是否为 本地开发环境 |
mica.prop | 无 | 装载自定义配置 mica.prop.xxx |
自定义配置
mica: prop: site-name: 如梦技术 site-url: https://www.dreamlu.net
配置读取
@Autowired private MicaProperties micaProperties; public boolean savePost() { String siteName = micaProperties.get("site-name"); String siteUrl = micaProperties.get("site-url"); // ..... }
启动器插件扩展
启动器的主要目的是能更加方便的去注入一些通用配置,降低使用难度。mica-log4j2
就是一个启动器的扩展。
插件扩展基于 java SPI 技术,关于 java SPI 具体使用可以百度。
实现 LauncherService,重写 launcher 方法
下面是 LauncherService 的代码。
/** * launcher 扩展 用于一些组件发现 * * @author L.cm */ public interface LauncherService { /** * 启动时 处理 SpringApplicationBuilder * @param builder SpringApplicationBuilder * @param env 系统变量 Environment * @param appName 服务名 * @param profile 环境变量 * @param isLocalDev 是否本地开发 */ void launcher(SpringApplicationBuilder builder, Environment env, String appName, String profile, boolean isLocalDev); }
编写 SPI 文件放置到 resources 目录下
文件路径和文件名 META-INF/services/net.dreamlu.mica.launcher.LauncherService
。
内容为你编写的插件完整类名,例如:net.dreamlu.mica.log.LogLauncherServiceImpl
。
最佳实践
mica-launcher
中我们预制了环境变量,您可以再服务里将配置中心按环境来划分域名。在配置中可以使用 ${mica.env} 占位符完成配置。
例如:(配置服务域名)
config-dev.dreamlu.net config-test.dreamlu.net ......
使用示例:
spring: cloud: consul: host: https://config-${mica.env}.dreamlu.vip port: 8500 config: format: yaml
开源推荐
- Spring boot 微服务高效开发
mica
工具集:https://gitee.com/596392912/mica -
Avue
一款基于vue可配置化的神奇框架:https://gitee.com/smallweigit/avue -
pig
宇宙最强微服务(架构师必备):https://gitee.com/log4j/pig -
SpringBlade
完整的线上解决方案(企业开发必备):https://gitee.com/smallc/SpringBlade - IJPay 支付SDK让支付触手可及:https://gitee.com/javen205/IJPay
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
mica 微服务组件集简介和组件图谱
mica 云母,寓意为云服务的核心,使得云服务开发更加方便快捷。mica 的前身是 lutool,lutool 在内部孵化了小两年,已经被多个朋友运用到企业。由于 lutool 对微服务不够友好,故重塑了mica。 mica 核心依赖 mica 基于 java 8,没有历史包袱。仅依赖 Spring 全家桶,无第三方依赖。 依赖 版本 Spring Boot 2.1.x Spring Cloud Greenwich.RELEASE 模块简介 mica-auto 采用 java annotation processor 技术,在编译期间生成一些 Spring boot starter 配置,减少重复性工作也避免因为忘记修改而照成服务启动失败。 码云:https://gitee.com/596392912/mica-autoGithub:https://github.com/lets-mica/mica-auto mica Spring boot 微服务开发核心包,由于功能众多不做详细描述,大家可以看组件图谱。 码云:https://gitee.com/596392912/micaGith...
- 下一篇
Unity ShaderLab学习总结
本文只讨论Unity ShaderLab相关的知识和使用方法。但, 既不讨论渲染相关的基础概念,基础概念可参考Rendering Pipeline Overview等文章。也不讨论具体的渲染技巧移动设备GPU和桌面设备GPU硬件架构上有较多不同点,详见下面的“移动设备GPU架构简述”一章。一句话总结: GameObject里有MeshRenderer,MeshRenderer里有Material列表,每个Material里有且只有一个Shader;Material在编辑器暴露该Shader的可调属性。所以关键是怎么编写Shader。 Shader基础编辑器使用MonoDevelop这反人类的IDE来编写Shader居然是让人满意的。有语法高亮,无语法提示。如果习惯VisualStudio,可以如下实现.Shader文件的语法高亮。 下载作者donaldwu自己添加的关键词文件usertype.dat。其包括了Unity ShaderLab的部分关键字,和HLSL的所有关键字。关键字以后持续添加中。将下载的usertype.dat放到Microsoft Visual Studio xx....
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Red5直播服务器,属于Java语言的直播服务器