本文主要是介绍请期待Martin,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Martin是什么
Martin 这个词取自微服务之父 Martin Fowler 的名字,我的本意是想集成一套企业级的微服务架构,一直想不到取个什么名字,在看了 Martin Fowle 写的以一些关于微服务的文章之后,突然觉得Martin这个名字挺好的,所以拿来做我的项目名称,也算是对先驱的致敬。
Martin处于什么阶段
Martin 目前处于闭源开发阶段,已经完成后端大量开发工作,正准备集成一套前端管理页面,目前选型为 ant design pro,本篇作为一个开发计划,及发布公式,会一直公示 Martin 相关进度及信息。
如果关注的人比较多,我会提前开放源码供大家学习。
QQ群:点击加入群聊【干货java交流群】:
Martin
spring cloud 微服务,开箱即用
带你领略spring boot、spring cloud 之美,服务更多猿弟、猿妹,助力企业微服务转型升级
背景
为什么有了那么多优秀的spring cloud开源项目了,我还要再自己做一个呢?
问君哪得清如许,为有源头活水来。
正如这句名言所讲,水清是因为有源头活水,用到架构设计、写代码上,也是一个道理,要想写出好的代码,就必须到源头学习。spirng boot官方英文文档就是 spring boot 最好的学习源头,而翻译它官方的文档,就是最好的实践。我阅读了spirng boot官方英文文档,翻译了spring boot 官网多篇技术文章,在做了上述两件事之后,我开始调研国内外开源的 spring boot 项目,对比了gitee、github上五个比较优秀的开源项目,从这几个开源项目里也学到了很多优秀的思想与技术,比如mybatis-plus、ouath2.0、jwt、项目结构划分等等。
看过的开源项目地址如下:
1. iBase4J https://gitee.com/iBase4J/iBase4J
2. guns https://gitee.com/stylefeng/guns
3. pig https://gitee.com/log4j/pig
4. paascloud-master https://github.com/paascloud/paascloud-master
5. piggyMetrics https://github.com/sqshq/PiggyMetrics
解决哪些问题
项目结构规划不合理
项目结构规划对整个开发周期来说,有着决定性的作用,一个好的结构设计,对后期开发和维护项目有着很友好辅助作用,项目划分的越细,做的越大,体现的越明显。下面看看我看的这几个开源项目的一个划分思路:
-
iBase4J
-
guns
-
pig
-
paascloud-master
-
piggyMetrics
总结:
这几个项目的架构设计划分上,各有千秋,我无权说哪个好,哪个差,有的更偏向按业务划分,有的更偏向按技术划分,我个人结合这几个项目,加自己多年的开发经验,为 Martin做了如下结构设计:
----> Martin----> Martin-biz(各种资源、业务模块)----> Martin-biz-api (各业务远程通信模块)----> Martin-biz-resource (示例资源模块)----> Martin-biz-sso (示例单点登录模块)----> Martin-biz-swagger (示例接口文档模块)----> Martin-cloud(各种 spring cloud 模块)----> Martin-cloud-eureka (注册中心)----> Martin-cloud-config (配置中心)----> Martin-cloud-gateway (网关)----> Martin-common(各种公共组件模块)----> Martin-common-bom (约定整个项目jar版本)----> Martin-common-core (定义整个项目核心ar)----> Martin-common-security(控制整个项目安全策略)----> Martin-common-swagger (配置整个项目接口文档)----> Martin-extension(用于扩展第三方功能)
下面看看 eureka 管理端展示图吧!所有服务从上至下有序排列,一目了然!
jar包引用不合理
有的项目中jar引入过多,导致最终打出的jar包有点大。Martin中尽量只引入必须的包,比如想使用 spring boot 的一些基础功能,只引入spring-boot-starter,后面用到什么引入什么,做到最小化引入。
spring boot 使用不简洁、规范
得益于对 spring boot 官方教程的翻译工作,对 srpig boot 的基础实用有了一定了解, spring boot 最核心的功能是“自动装配”,有的开源项目中并未发挥该优势,还在基于 spring mvc 做技术架构设计。Martin中但凡是第三方功能,都不需要Enalbe*去开启相应功能,比如swagger、oauth-resource等等,均为自动配置,Martin 默认为martin-biz模块下的所有模块开启这些功能,可通过修改配置文件一键关闭。所有新增的biz模块,只需要像搭建最简单的 spring boot 项目那样,写一个启动类,然后开心的写业务模块。
项目端口规划
----> Martin----> Martin-biz:94**(各种资源、业务模块)----> Martin-biz-auth:9400 (示例认证中心模块)----> Martin-biz-resource:9401 (示例资源模块)----> Martin-biz-sso :9402 (示例单点登录模块)----> Martin-biz-swagger:9403 (示例接口文档模块)----> Martin-cloud:95**(各种 spring cloud 模块)----> Martin-cloud-eureka:9500 (注册中心)----> Martin-cloud-config:9501 (配置中心)----> Martin-cloud-gateway:9502 (网关)
这篇关于请期待Martin的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!