好雨云的微服务架构实践

jopen 9年前

微服务从去年以来一直受到众多开发者的热捧,目前国外使用微服务架构的知名厂商中不乏Amazon、推ter、Netflix等这样的科技巨头,但是国内在微服务领域实践这块,真正成功的案例屈指可数,好雨云平台强调应用一键部署,整个平台的核心正是基于微服务的架构去搭建,可以说,好雨云在微服务领域有着成功的经验和技术。

那么 好雨云 究竟是一个怎样的平台呢,据该平台创始人刘凡介绍,好雨云平台是提供一站式,开发、部署、运行和伸缩任何类型应用的云平台,强调应用的一键部署,同时,好雨云平台还提供数据服务、开发工具和企业信息服务,为产品和企业发展提供全方位支持。 目前和好雨云平台类似的国外有Heroku和IBM BlueMix。

对于有着超过12年互联网产品开发和管理经验刘凡来说,选择PaaS领域创业并非偶然,在澳客网的时候,他发现企业在产品开发的过程中,浪费了大量的时间在申请服务器、安装各种依赖服务、配置开发环境、写构建脚本等上面,当时就思考如果能把每个团队重复做的事情和有难度的技术问题,做成一个可重用的轮子,产品团队只要专注于产品本身,那产品的开发效率将大大提升,试错成本也将更低,于是,他和几位有类似想法的小伙伴离开了澳客网,创办了好雨云。

本文来自于对好雨云创始人刘凡的专访,他给我们详细介绍了微服务在好雨云的实践。

微服务架构成功的因素

微服务的众多优势让其成为当前受到众多厂商和开发者的热捧, 据刘凡介绍,好雨云平台在打造之初并没有为了实施微服务而实施微服务,其实,微服务本质上是好雨云平台的一个非常核心的功能,简而言之,用户只要在他们平台上部署服务,它本身就是个微服务,实际上好雨云整个平台的核心就是基于微服务的架构去搭建的,所以用户不管部署的是程序还是部署传统服务,或者一个其他的第三方应用程序,在这中间都可以按照微服务的方式进行。

另外,刘凡表示当前对于微服务来说,最大的一个挑战就是当服务特别多的时候,对于大量服务的管理仍然是一个不小的挑战,而好雨云从整个服务的部署、伸缩、高可用、容错、监控以及服务之间一个依赖关系都给出了自己的解决方案。

值得一提的是,目前国外很多的互联网巨头包括Google、Netflix、非死book、Twiter等在微服务实施领域都取得了成功,给国内想要进行微服务实施的企业提供了有益的借鉴。在刘凡看来,微服务要实施成功关键在于以下几个方面:

第一,这些巨头根据自己的业务特性,研发适合自己的微服务框架。

第二,在经过长期的实践,对业务重新建模,合理的将业务拆解成微服务。

第三,当微服务的数量增多,为保证服务可用性,需要有可靠的容错机制。

第四,依赖公有云或自建云服务,满足互联网模式下的快速业务伸缩。

微服务的本质是管理

谈及国内的微服务情况,刘凡认为当前国内的微服务实践大多数都还是个概念,实际上很多企业的业务还是一体化架构,在从一体化架构向微服务转变过程中,国内企业首先需要做的事情就是对业务进行拆解,合理的模块化业务;其次,需要优化整个服务管理。针对上述两个问题,他指出,对于希望实施微服务架构的企业来说,首先还是要从梳理自己的业务架构开始,逐步的把一体化架构拆解成微服务化架构;不能为了实施微服务架构而实施微服务架构,需要清晰的认识SOA架构跟微服务架构的差异,真正的有效的去实施微服务架构;最后,要擅于利用工具为实施微服务提供支持,如果可以有效的利用工具,对于提升整个公司微服务的实施效率有很大帮助。

虽然微服务具备很多的优势,但是由于微服务本身的特性,实施起来的的难度非常大,那么对于国内企业来说真正愿意实施微服务的意愿有多大,刘凡表示,在当前企业架构里面,服务的部署、伸缩、高可用、容错、监控等,本质上,是对现有服务的管理。如果不谈微服务架构,如果只是有微服务架构管理工具支持,照样能极大提升运维和开发效率,这属于低层次的价值;而对于高层次来说,微服务架构能解决CTO的管理问题,合理的微服务抽象和拆分对应合理的组织结构划分, 每个服务就变成一个独立的小产品,运营这个产品就是组织主要目标,产品的价值决定组织的价值,产品用户的多少决定组织价值的高低,这种市场化的管理方法是最简单有效的管理方法。 另外,微服务架构能帮助技术团队快速开发和迭代产品,对创造一个成功产品有很大帮助。

微服务在好雨云的解决方案

好雨云的微服务架构实践

好雨云平台的底层是通过Docker实现的,只是用户感受不到Docker。通过这种内部封装,用户不用管理计算资源和网络资源,把复杂技术包装在内部。通过服务整体对外。

好雨云的微服务架构实践

只要提供代码就能一键部署在各种环境。

开发语言支持Java、Python、PHP、Ruby、Golang,Node.JS等,代码仓库支持Github,好雨托管仓库。

好雨云的微服务架构实践

垂直伸缩只需要设置资源的大小,水平伸缩只需要设置节点的个数。

好雨云的微服务架构实践

通过高可用调度器,所有服务都具备了高可用特性。

好雨云的微服务架构实践

类似Spring的依赖注入,要调整服务的依赖关系只需要界面点击久能轻松完成。

好雨云的微服务架构实践

类似保险丝,当服务B变慢,达到断路器的阀值,服务B将自动下线,不至于影响其他服务,当延迟变小,服务逐步恢复。

好雨云的微服务架构实践

业务指标:平均响应时间,吞吐率 ,在线人数。在实际场景中,使用业务监控可以替代技术监控,而且更加简单容易理解。

Docker的出现将简化微服务的管理

对于当前Docker的火热,刘凡表示,Docker的出现第一让部署更加快捷,第二,统一打包方式之后,对于整个微服务的管理更加简化。

好雨云平台的产品是基于Docker之上,当在好雨云的产品中,用户使用不需要学习docker,也感受不到容器的存在,他们对Docker做了包装,所有的特性都是面向应用的,而不是面向容器的,面向应用的方式,用户在简单友好的体验下就能管理,用户在部署应用的过程中是感受不到Docker的,从另一个角度简化了Docker的使用。

从之前的敏捷开发到现在的PaaS平台创业,作为技术出身的刘凡认为最大的挑战还是对于B端产品设计的把握,因为过去C端用户的产品打造经验对于当前的B端产品设计来说可能不一定适用,而对于这样一个有着十多年产品打造经验的刘凡来说,并没有刻意回避,相反,在他的带领下,专注应用一键部署的好雨云平台正在PaaS领域开创中国的Heroku。

好雨云微服务实践

微服务架构是好雨云基础组件,好雨云的很多功能都跑在它上,好雨微服务架构的第一个用户就是好雨云自身,在这个过程中我们也体会到微服务架构给我们带来的便捷。

好雨云的微服务包括:

控制台服务 —— python 实现

实时消息服务 —— java 实现

计费服务 —— python实现

统计服务 —— java实现

日志服务 —— c 实现

redis服务 —— dockerfile 构建

mysql服务 —— dockerfile构建

我们技术团队每个人擅长的开发语言不同,在微服务中也有体现,喜欢python的开发者用python开发微服务,喜欢java的开发者用java开发,适合用c的微服务用c开发,开源的服务直接用dockerfile构建。新来的开发人员不需要学习就可以开始开发。

好雨云微服务的开发过程全部在云平台上进行,本地没有设置开发和测试环境,我们为每一个微服务建立两个应用,一套是开发测试应用,另一套是生产应用,开发测试应用关联开发代码分支,依赖测试数据服务,生产应用关联代码主干,依赖生产数据服务,开发人员日常开发调试在开发测试应用进行,代码提交开发分支,点击部署,马上就能看见应用的效果,测试通过的应用,将代码合并到主干,点击生产应用的部署,完成上线过程,如果代码有重大bug,点击日志中的“代码回滚”就能迅速回滚到上一个代码版本。除此之外服务高可用、服务伸缩、服务容错这些需求都交给好雨微服务架构组件去解决,通过这样的方法我们一天最多上线50多个版本,而过程中用户的服务没有异常中断。

控制台服务是用户使用量比较大的服务,为了优化性能,我们重度依赖应用实时性能分析,它可以分析出对性能影响最大的SQL和URL,优化完SQL和对应的程序,上线后立马就能看见效果。并根据效果继续优化。对服务的伸缩,我们依赖于实时业务监控,通过监测总体响应时间和吞吐率决定服务是扩容还是缩容。

通过好雨微服务架构来开发好雨云的特性, 我们践行了“吃自己的狗粮”,并持续优化着好雨微服务架构,做为第一个微服务架构的用户我们也从中受益,我们在环境问题、系统管理、性能优化、服务伸缩和代码发布上线上几乎没有浪费时间,让我们更加专注产品本身,快速迭代。

来自: http://www.iteye.com/news/31394