微服务 在 Boss 的应用

目的

  • 减少复杂的业务, 限制业务边界
  • 定制化容易操作 和 定制化 可以基于版本的基线
  • 监控各个端口, API 影响是可控的
  • 水平扩展
  • 测试方便

标准指标

  • 服务是自治的
  • 服务的范围不大不小
  • 服务接口是幂等
  • 独立开发, 独立部署
  • 服务接口无状态性
  • 各部分数据做到最终一致性

具体步骤和里程碑

  • (must) 认证服务器需要提前
  • (must) 前后端代码进行分离
  • (must) 负载均衡 session 需要外部处理
  • (must) 后端代码模块直接切分
  • (must) 各个模块直接的耦合, 尽量使用异步的方式进行沟通
  • (must) 引入 界限上下文 的概念, 让每个模块都控制在一定的范围内
  • (must) 服务注册和发现
  • (must) UnitTest 的引入
  • 每个模块独立的数据库
  • 规范到每个模块的负责人
  • (must) 开发时候 每个模块的管理 和 部署
  • 优化每个模块, 引入 读写模型 的 分离
  • 监控不同的模块

步骤的分解

(must) 认证服务器需要提前

需要在 nginx 后进行 CAS 的验证, 并且验证的信息是会放在session 里面的? 这个的话, 好像有点问题, 因为session 已经是放在 缓存进行保存了, 需要咨询 劲飞。已经咨询过劲飞了, 可能验证的模块是当做是公用的模块, 同时 Session 是做到无状态, 下次做灰度测试的时候就会比较方便。 但是需要同时考虑到微信, 手机登录等各种操作, 做到统一性。

(must) 前后端代码进行分离

需要做到前后端人员能够快速进行开发。另外一个问题: 如何做到前端都可以做到分到模块来进行限制呢?

(must) 负载均衡 session 需要外部处理

直接调整 nginx 配置, 直接共享Session

(must) 后端代码模块直接切割

重中之重, 先拿一个 Customer 的模块 (这个模块选的有点大, 但是在实践过程中, 不断的缩小模块的范围, 让服务的切割, 不大不小, 刚好满足服务的界限, 而且考虑到人员的维护性; 或者拿 Customer 评价 这个模块) 进行验证。 这个涉及到下面的几个方面

**短期目标: **

  1. 直接拆分模块, 把 Customer 的模块 代码都独立出来, 依赖于原系统
  2. 对于 Customer 的模块, 对外围引用的模块, 界限上下文 必须要清晰, 分清晰 CoreDomain 和 辅助类型的Domain, 辅助类型的Domain 没有独立的表, 仅仅是 利用接口 获取到 的 ValueObject
  3. 对于 其他引用到 Customer模块的, 引入 因为 customer Domain 引发的 辅助型的 Domain, 没有独立的表, 仅仅是一个 ValueObject, 其他模块不能 直接import Customer 模块的类
  4. 还是使用原来的获取接口(直接调用方法
  5. 模块分出来后, 就进行自己的版本基线控制

短期目标 具体步骤目标[http://www.jianshu.com/p/6b4ddd8b3bfb]

**中期目标: **

  1. 接口使用到 RPC 的方式来做到, 获取到 的 ValueObject
  2. 分离公用的第三方的库, 让 Customer模块 依赖于公用的库
  3. 分割模块后, 读取数据 和 业务 之间的区别?
  4. 如果读取是多个表的数据的话, 应该是如何去处理
  5. 业务 和 门面模式控制的业务, 应该是如何去分开

最终目标:

  1. 直接拆分模块, 把 Customer 的模块 代码都独立出来, 只依赖于公用类库
  2. 对于 Customer 的模块, 对外围引用的模块, 界限上下文 必须要清晰, 引入辅助类型的Domain, 辅助类型的Domain会有自己存储结构。
  3. 对于 其他引用到 Customer模块的, 引入 因为 customer Domain 引发的 辅助型的 Domain
  4. 使用到 异步更新 和 订阅消息的方式来更新

(must) 各个模块实现弱耦合, 尽量使用异步的方式进行

  1. 正常的业务流程, 使用 队列的方式进行交互
  2. 辅助性Domain属性的更新, 使用到 订阅者方式进行更新
  3. CoreDomain的属性的更新, 如果是其他模块引起的, 都是需要订阅者方式进行更新

这需要等 前面的 代码模块的切割 才可以比较好的实现。

(must) 引入 界限上下文 的概念, 让每个模块都控制在一定的范围内

(must) 服务注册和发现

使用 SpringBoot 和 ZooKeeper 的方式来做到服务的注册和管理

(must) UnitTest 的引入

对单独的模块可以进行 UnitTest 的验证, 做到每个模块快速进行自动化测试

每个模块独立的数据存储模块

有可能不同的模块是 使用不同的数据库等。

规范到每个模块的负责人

人员只负责自己的模块, 看不到别人的模块, 就可以限制出错的范围, 每次修改都是有信心的。

(must) 开发时候 每个模块的管理 和 部署

后端代码模块直接切割 短期目标

依赖项目, 还是整一个 War 的进行部署

后端代码模块直接切割 长期目标

利用到 Spring 和 ZooKeeper, 分离的方式进行部署

优化每个模块, 引入 读写模型 的 分离

监控不同的模块

安全 - 对外的白名单 nginx

持续化集成和交付

使用DDD的概念对整个模块内部代码进行整理

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,099评论 18 139
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,014评论 11 349
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,565评论 25 707
  • 医院总是弥漫着一股消毒水的味道。而郑何安最讨厌的就是这个味道。 "都处理好了?"此时躬身面对着他的,是个穿黑西服的...
    三木水乙阅读 326评论 0 2
  • 我想问你对于你来说,年纪是一个什么概念? 18岁的你会说我成年了,能够自由自在的生活了;22岁的你会说我毕业了,要...
    Smiie向阳阅读 839评论 0 1