35 | 微服务架构最佳实践 - 方法篇
35 | 微服务架构最佳实践 - 方法篇
讲述:黄洲君
时长10:24大小4.76M
服务粒度
拆分方法
基础设施
小结
赞 37
提建议
精选留言(73)
- 云学2018-07-17这篇很实用,谢谢分享
作者回复: 仅此一家,别无分店,都是我自己思考出来的😄
118 - herist2018-07-18感谢老师对微服务解读,有3个问题:目前公司有个在线交易系统,大概几百个表的单体服务项目,其他业务前端都远程调用这个项目,现在想做微服务的改造。 1、实施微服务按业务职责划分后,是否对应模块的数据库也必须要独立? 2、若为每个微服务项目都拆出来新的数据库,原来各业务间的数据依赖(单库的时候Join查询就ok了),拆分多个项目后,有何好的处理办法? 3、团队开发时的问题,由于每小团队负责一个微服务,但开发时需要访问其他微服务,应该有个开发环境负责集成大家提交的代码,构建新版本供其他团队调用和调试,即:开发团队都可以作为消费者访问服务器上微服务(互通),但是开发人员本机启动调试时,不能注册到这台服务器(隔离),这块如何能很好解决?展开
作者回复: 1. 需要,微服务需要独立部署独立运行,数据库不拆分做不到这点 2. 参考专栏前面分库分表内容 3. 开发环境也可以搭建微服务,我们是三套环境:开发,测试,线上
共 10 条评论26 - 型火🔥2018-07-18三个火枪手分前后端吗?
作者回复: 一般指后端人员,前端人员是多服务公用的,如果用node之类的系统,本身可以算一个独立的微服务
14 - 王刚2018-07-18听了老师的课对我自己有很大帮助,最近我们公司也在研究微服务~总感觉是一头雾水~希望老师多讲解一下关于微服务经常会涉及到的精髓!
作者回复: 本篇就是精髓😄😄
9 - 赵武艺2018-07-17看来小企业还是不太适合微服务架构,尤其是开发人员少的?
作者回复: 是的,等业务发展,人员规模大了再重构,90%以上的新业务还没发展就挂掉了😂😂
10 - Ivan2018-07-17使用dubbo体系,开发微服务。那么一个微服务是指一个部署单元(jar or war)还是指一个暴露的接口?我的答案是部署单元。请老师帮忙解惑,谢谢!
作者回复: 一个可以独立部署和运行的子系统
9 - 杨陆伟2019-03-28为什么说配置中心可以提升测试和运维的效率,这里不是太理解
作者回复: 不用去几十台服务器几百个节点手工修改配置文件
8 - Geek_89bbab2018-10-24那么对于像kafka,rabbitmq这样的对应的消费者服务的消费地址是否应该放置到配置中心动态配置?还是不建议动态修改?
作者回复: 任何配置都可以放配置中心,区别只是动态配置还是需要重启,中间件也不例外
8 - 森林2018-09-20这里有个先有鸡还是现有蛋的问题。究竟是先根据人数量决定服务数量,还是根据服务数量决定人的数量。就像文章里提到的,很多时候需要根据各种需求场景拆分服务,当生产确切不拆分就会导致问题时,应该反向以服务数量评估要扩招的人
作者回复: 招人的第一标准是业务有没有发展😄
共 2 条评论7 - 孙振超2018-09-15咨询老师一个问题:在服务切分的时候会存两个系统间数据发生交集的情况,比如一个是设备系统,另一个是用户系统,用户的各项操作必然发生在设备上,这样就会存在设备和用户的各种关系和操作记录,像这样的数据设备系统和用户系统都希望以自己为准,而后对外提供相应的服务。如果是数据存储两份,设备系统存储设备和用户的关系,用户系统存储用户和设备的关系,那么在数据一致性和调用链路上就会变得复杂;如果只存储一份,放在那个系统上另一个系统都会有意见。对于此种情况,有什么比较好的解法?展开
作者回复: 其实你这句话已经包含了答案“用户操作必然发生在设备上”,这就是说设备是基础数据,用户和设备对应关系应该是用户系统管理的。 还有一种判断标准是设备数据还可以给其它业务用,如果设备系统存储用户和设备对应关系,这个数据不是通用的,违背了设备系统的职责
7 - laolinshi2018-09-17看评论中的那些问题真是受益良多。
作者回复: 自古评论出人才😄
4 - 女巫在寒江2018-08-17我觉着我们现在的微服务架构刚好,我们是四个人负责集成公司的规则引擎,引擎那边有规则的编译器和执行器,对应的服务就划分为 规则编辑 和规则执行这两个部分,基本是两人负责一个服务5
- LB2018-07-18我所在工作单位系统基本都是外部采购,大概有100多个,开发、测试人员大部分是各个公司的外包人员,开发和运维部门又相对比较独立。请问实施微服务是否是一个明智的选择?代价会有多大?领导觉得SOA的ESB太重,又没有使用。希望华仔帮忙给些架构方面的建议,谢谢。
作者回复: 采用微服务不明智,你们这种是典型的SOA应用场景,因为基本都是采购的
5 - wind20172018-07-17老师,目前Spring Cloud哪个版本更稳定些?
作者回复: 通常用GA版本就可以
5 - 谭方敏2020-03-12服务粒度 三个火枪手,一个服务三个人。 好处包括:1)全面了解系统,2)相互形成备份,3)相互讨论。 拆分原则 1)基于业务逻辑 结合三个火枪手选择,计算服务数量,由此决定服务的职责范围。 2)基于可扩展性 将成熟的和不变化的服务分为稳定服务,而将不成熟和变化的服务称为变化服。 3)基于可靠性 将业务模块按照优先级排序,将高可用的核心模块和不高可用的非核心模块分开,重点保证核心模块的高可用性。 好处有a)让非核心业务不再影响核心业务,b)让核心业务变得更加简单,c)降低高可用成本 4)基于性能 类似于基于可靠性分析,将对性能要求高的和负载大的模块拆分出来,避免受其它业务影响。 基础设施 包括四大块: 1)服务发现,服务路由,服务容错 2)接口框架,api网关 3)自动化部署,自动化测试,配置中心 4)服务监控,服务跟踪,服务安全。 在现有微服务上拆分上,之前并没有将研发人数跟服务数量很好地结合起来。三个火枪手的原则很实用。不用特别高大上,异常接地气。 另外在描述基础设施的时候,表述非常全面。展开
作者回复: 可以试试
4 - Geek_89bbab2018-10-24老师,问一下关于配置中心的问题, 配置中心修改配置,然后通知对应的微服务,那么收到通知的微服务怎么使新的配置生效,我这里特别指的是那些通过配置有创建长生命周期对象的那种。比如mysql连接池,redis-client。比如数据库配置修改了,怎么使新的配置生效?求解惑
作者回复: 通常这类配置需要重启生效,一般改动频率也低,改动的时候由运维人工参与是可以的
共 3 条评论4 - 小思绪2018-10-05请问“接口框架”是指什么?有无成熟产品可以借鉴,它的作用是什么?API网关是指通用网关,比如支付宝开放平台网关,还是业务网关呢?我理解的业务网关的职责应该包括协议转换(比如外网的HTTP转内部Dubbo)和业务逻辑。
作者回复: 下一课就讲了
3 - return2018-07-21三个火枪手, 很犀利。
作者回复: 很形象,向大仲马和贝索斯借用了一些创意
3 - 张威2018-07-19我们项目正好相反,将系统拆分了多个子系统,但是同一个库,子系统之间没有相互调用,而是直接对相同库中的表进行操作。在开发过程中发现每个系统中多少会有些重复的代码。该系统是校级系统,目前没发现其它弊端
作者回复: 正常来说这样有很大隐患,我们之前有后台管理系统这样做,每周都需要安排人力排查线上数据错乱问题,因为数据写入有两个源
共 3 条评论3 - 进击的巨人2021-02-19老师请问,微服务拆饭是否可以按照层拆分,例如电商的商品,拆分成基础商品中心层,这样相当于沉淀了一个商品基础服务,这样拆的好处在于,上层可以构建不同业务模式的商品业务服务,例如传统B2C的商品可以作为一个微服务,社区团购的商品又可以作为一个微服务,达到了商品基础模型能力的复用
作者回复: 一般微服务不建议按层来横向分,而是纵向按照业务功能或者业务域来分。 你说的B2C商品微服务和社区团购微服务这种复用,其实是中台的概念,即:中台提供“商品中心”这样一个业务子域的概念,支撑上层不同的业务。
3