开发者俱乐部

标题: “微”力无限,微服务架构(Microservices Architecture)应用实践 [打印本页]

作者: xman    时间: 2016-12-13 17:36
标题: “微”力无限,微服务架构(Microservices Architecture)应用实践
随着Docker等云技术的大量应用,企业的互联网业务复杂度不断提升,传统整体应用架构模式越来越臃肿,难以适应灵活多变的业务需求。微服务架构(Microservices Architecture)应运而生,它放弃了传统大规模的单块集成应用,改为细粒度、松耦合、可灵活组合的自治单元,成为云计算时代应用的主要构建方式。
微服务架构以其高度的弹性、灵活性和效率的巨大提升,快速受到各领域架构师和技术决策者的关注,在Netflix、Amazon、Airbnb等公司成功应用,并逐渐成为互联网行业最受关注的技术架构。今天就由云智慧开发经理 Allen Lai为大家带来关于Microservices Architecture微服务架构应用实践的分享内容。
什么是微服务?
微服务是一种全新的互联网架构,它的基本理念是将一个肥大的系统拆分成若干小的服务组件,组件之间的通讯采用轻量的协议完成,譬如REST API。微服务本质上是SOA (Serviceoriented Architecture) 的扩展延伸。相对来说,微服务的可操作性更强,可以逐步安排合理资源,对一个大的系统进行分解,或是至少停止让它继续肥大。
微服务的好处包括:
Restful API集成Swagger1
整体应用 vs 微服务应用
那么,我们来看看另一种过去常用的架构,单体架构Monolithic application的情况,单体架构也有它的优势,对于项目应用或是公司创业初期是个很好的选择,可以更快的解决有和没有的问题,适合小团队开发实现,而且横向扩展方便,例如镜像部署的时候。但当公司大了以后,随着应用越来越多、第三方系统的不断接入或者企业的并购,问题会慢慢的暴露出来。
主要体现在如下方面:
我曾经遇到过一个超过400M的大Jar包,启动应用超过5分钟,那段时间简直被OPS骂死。举个例子,一个产品犹如一条鱼,开始的时候游得很畅快,但是有一天,这条鱼变成这样:
整体应用架构
它每次的转身、变更都很慢,因为太重了。后来我们意识到,不能再往它身上放东西了,经过逐步的调整,变成了如下的结构:
Microservices Architecture
Tomcat上承载的东西变少了,有明确边界的服务都被拆分成了独立的restful应用,这样面向众多客户的web app,部署节奏加快,后端的若干子服务部署节奏也加快。
公司大了以后,异构系统和Hybrid都是在所难免的,有朝一日云智慧也会面临这个场景。监控宝和透视宝平台提供的功能由php, java, Ruby on Rails, Python Django, .net mvc等组成,同时对于外部服务的集成,集成后对主应用的影响不亚于功能性的要求。比如集成一个外部服务,他的服务升级很快,那么对这块功能的变更和主应用应该是隔离的,而微服务架构确实能隔离这个问题。
微服务架构的实现,目前国内有阿里的dubbo,国外有Twitter的Finagle框架,他们都是基于RPC的。如果我们的微服务是基于restful服务,那么无须选择他们,考虑到异构系统,基于http rest依旧是最合适方案。
任何一种架构都有它的适用场景和一些不足,微服务什么问题呢?
这方面,业界也有解决方案,比如Docker / Kubernetes集群化方案。今晚主要是从High level介绍一下微服务架构,具体细节要有合适的应用场景,下次分享我们会准备一个Demo,一起来尝试如何让web app更轻,如何用spring boot构建一个微服务。







欢迎光临 开发者俱乐部 (http://xodn.com/) Powered by Discuz! X3.2