- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
互联网架构为什么要做服务化?.pdf
互联⽹架构为什么要做服务化?
近期参加⼀些业界的技术⼤会,“微服务架构”的话题⾮常之⽕,也在⼀些场合聊过服
务 架构实践,最近⼏期⽂章期望⽤通俗易懂的语⾔聊聊了个⼈对服务 以及微服务
架构的理解,希望能给⼤伙⼀些启⽰。如果有遗漏,也欢迎⼤家补充。
⼀、互联⽹⾼可⽤架构,为什么要服务化?
【服务化之前⾼可⽤架构】
在服务 之前,互联⽹的⾼可⽤架构⼤致是这样⼀个架构:
(1)⽤户端是浏览器browser ,APP客户端
(2 )后端⼊⼜是⾼可⽤的nginx集群,⽤于做反向代理
(3 )中间核⼼是⾼可⽤的web-server集群,研发⼯程师主要编码⼯作就是在这⼀层
(4 )后端存储是⾼可⽤的db集群,数据存储在这⼀层
更典型的,web-server层是通过DAO/ORM等技术来访问数据库的。
可以看到,最初都是没有服务层的,此时架构会碰到⼀些什么痛点呢?
【架构痛点⼀:代码到处 贝】
举⼀个最常见的业务的例⼦-⽤户数据的访问,绝⼤部分公司都有⼀个数据库存储⽤
户数据,各个业务都有访问⽤户数据的需求:
在有⽤户服务之前,各个业务线都是⾃⼰通过DAO写SQL访问 ser库来存取⽤户数
据,这⽆形中就导致了代码的拷贝。
【架构痛点⼆:复杂性扩散】
随着并发量的越来越⾼,⽤户数据的访问数据库成了瓶颈,需要加⼊缓存来降低数据
库的读压⼒,于是架构中引⼊了缓存,由于没有统⼀的服务层,各个业务线都需要关
注缓存的引⼊导致的复杂性:
对于⽤户数据的写请求,所有业务线都要升级代码:
(1)先淘汰cache
(2 )再写数据
对于⽤户数据的读请求,所有业务线也都要升级代码:
(1)先读cache ,命中则返回
(2 )没命中则读数据库
(3 )再把数据放⼊cache
这个复杂性是典型的“业务⽆关”的复杂性,业务⽅需要被迫升级。
随着数据量的越来越⼤,数据库需要进⾏⽔平拆分,于是架构中又引⼊了分库分表,
由于没有统⼀的服务层,各个业务线都需要关注分库分表的引⼊导致的复杂性:
这个复杂性也是典型的“业务⽆关”的复杂性,业务⽅需要被迫升级。
包括b g的修改,发现⼀个b g ,多个地⽅都需要修改。
【架构痛点三:库的复⽤与耦合】
服务 并不是唯⼀的解决上述两痛点的⽅法,抽象出统⼀的“库”是最先容易想到的解
决:
(1)代码拷贝
(2 )复杂性扩散
的⽅法。抽象出⼀个 ser .so ,负责整个⽤户数据的存取,从⽽避免代码的拷贝。⾄于
复杂性,也只有 ser .so这⼀个地⽅需要关注了。
解决了旧的问题,会引⼊新的问题,库的版本维护与业务线之间代码的耦合:
业务线A将 ser .so 由版本1升级⾄版本2 ,如果不兼容业务线B的代码,会导致B业务出
现问题;
业务线A如果通知了业务线B升级,则是的业务线B会⽆故做⼀些“ ⾃⾝业务⽆关”的升
级,⾮常郁闷。当然,如果各个业务线都是拷贝了⼀份代码则不存在这个问题。
【架构痛点四:SQL质量得不到保障,业务相互影响】
业务线通过DAO访问数据库:
本质上SQL语句还是各个业务线拼装的,资深的⼯程师写出⾼质量的SQL没啥问题,
经验没有这么丰富的⼯程师可能会写出⼀些低效的SQL ,假如业务线A写了⼀个全表
扫描的SQL ,导致数据库的CPU 100% ,影响的不只是⼀个业务线,⽽是所有的业务线
都会受影响。
【架构痛点五:疯狂的DB耦合】
业务线不⾄访问 ser数据,还会结合⾃⼰的业务访问⾃⼰的数据:
典型的,通过join数据表来实现各⾃业务线的⼀些业务逻辑。
这样的话,业务线A的table- ser与table-A耦合在了⼀起,业务线B的table- ser与table-B
耦合在了⼀起,业务线C的table- ser与table-C耦合在了⼀起,结果就是:table- ser ,
table-A ,table-B ,table-C都耦合在了⼀起。
随着数据量的越来越⼤,业务线ABC的数据库是⽆法垂直拆分开的,必须使⽤⼀个⼤
库 (疯了,⼀个⼤库300多个业务表 =_= )。
【架构痛点六:…】
⼆、服务化解决什么问题?
为了解决上⾯的诸多问题,互联⽹⾼可⽤分层架构演进的过程中,引⼊了“服务层” 。
以上⽂中的⽤户业务为例,引⼊了 ser-service ,对业务线响应所⽤⽤户数据的存取。
引⼊服务层有什么好处,解决什么问题呢?
【好处⼀:调⽤⽅爽】
有服务层之前:业务⽅访问⽤户数据,需要通过DAO
您可能关注的文档
- 专题:普世价值之辨.ppt
- 严重少精子和无精子的不育患者Y染色体微缺失的检测_宋宁宏.pdf
- 中国人民大学教育学院攻读教育学专业博士学位研究生培养方案.pdf
- 中国传媒大学研究生培养指导记录单.pdf
- 中国沿海近代城市繁兴的特点及其原因.pdf
- 中国特色形考1答案.doc
- 中国语用学20年.pdf
- 中国车联网产业技术战略创新联盟.pptx.pdf
- 中国高铁的历史起点.doc
- 中央党校思想政治教育专业考研参考书目,招生人数.pdf
- 北师大版小学数学三年级上册《寄书》教学设计.docx
- 统编版(部编版)语文二年级上册《雪孩子》教学设计.docx
- 统编版(部编版)语文二年级上册《八角楼上》教学设计.docx
- 北师大版小学数学三年级上册《长方形周长》教学设计.docx
- 北师大版小学数学三年级上册《丰收了》教学设计.docx
- 统编版(部编版)语文二年级上册《夜宿山寺》教学设计.docx
- 统编版(部编版)语文二年级上册《风娃娃》教学设计.docx
- 统编版(部编版)语文二年级上册《朱德的扁担》教学设计.docx
- 统编版(部编版)语文二年级上册《难忘的泼水节》教学设计.docx
- 统编版(部编版)语文二年级上册《纸船和风筝》教学设计.docx
最近下载
- 舞台人生:走进戏剧艺术(中央戏剧学院)超星尔雅学习通章节测试答案.docx
- 《GBT2677.5-1993-造纸原料1%氢氧化钠抽出物含量的测定》.pdf
- 学院科研管理系统需求说明.docx VIP
- 缠师的解盘及回帖整理图文结合92-108..doc
- 国家安全-完整版PPT课件.pptx
- 通信设备施工安全操作规程安全操作规程系列文件 岗位作业指导书 岗位操作规程 .docx VIP
- 动物园安全风险分级管控和隐患排查治理双体系方案全套资料.doc
- 儿童眼保健及常见眼病PPT课件【40页】.pptx
- 媒体传播与舆情监测.pptx VIP
- 贵州省标 - 黔07J102 蒸压加气混凝土砌块建筑构造.pdf
文档评论(0)