专栏首页Rainbond开源「容器云平台」好雨云的微服务架构实践

好雨云的微服务架构实践

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

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

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

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

微服务架构成功的因素

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

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

值得一提的是,目前国外很多的互联网巨头包括Google、Netflix、Facebook、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和对应的程序,上线后立马就能看见效果。并根据效果继续优化。对服务的伸缩,我们依赖于实时业务监控,通过监测总体响应时间和吞吐率决定服务是扩容还是缩容。

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

本文分享自微信公众号 - 好雨云(goodrain-cloud)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-03-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【干货下载】谷歌、亚马逊等十大公司精选微服务案例

    Rainbond开源
  • 干货下载:谷歌、亚马逊等十大公司微服务案例精选

    Rainbond开源
  • 微服务架构在Netflix的应用:架构设计的经验教训

    Rainbond开源
  • 程序员修神之路--要想做好微服务架构,并非易事!!

    微服务(Microservices Architecture)是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微...

    心莱科技雪雁
  • How Anti-Patterns Can Constrain Microservices Adoption

    Microservices创造了大量小型分布式用途单一的服务,每个服务拥有自己的数据。这种服务和数据耦合支持有界上下文和无共享体系结构的概念。h服务及其相应的数...

    程序你好
  • 一起玩转微服务(1)——概念

    随着各行各业公司的快速发展,业务规模的不断扩大,不可避免的造成原有架构不能够适应快速的增长和变化。这时,微服务就进入大家的视野,其实在微服务之前,很多的公司已经...

    cloudskyme
  • SOA与微服务

    微服务是一种应用架构模式,而 RPC 是一种远程调用方式,它们是不一样的概念;而在微服务中会出现服务之间的调用,为了确保性能,我们一般采用 RPC 来调用。

    Java高级架构
  • DevOps能力是落地微服务的前提

    在软件开发领域不存在银弹,当用一项新的技术或新的架构时一定要明白其背后的原理,确保把合适的技术应用在合适的项目上,而不是盲目跟风。 单体应用伸缩性差,而且随着应...

    静一
  • 关于使用微服务架构的一些思考

    在单体应用时代,我们把所有的业务模块都写在一个系统内,随着新功能的增加,系统的代码库会越来越大,以至于想要知道该在什么地方做修改都很困难。虽然系统内划分了模块,...

    会跳舞的机器人
  • 阿里前P8高级架构师讲述微服务架构

    微服务倡导将复杂的单体应用拆分为若干个功能简单、松耦合的服务,这样可以降低开发难度、增强扩展性、便于敏捷开发。当前被越来越多的开发者推崇,很多互联网行业巨头、开...

    用户1667431

扫码关注云+社区

领取腾讯云代金券