阅读更多

3顶
1踩

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

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

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

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

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

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

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

通过好雨微服务架构来开发好雨云的特性, 我们践行了“吃自己的狗粮”,并持续优化着好雨微服务架构,做为第一个微服务架构的用户我们也从中受益,我们在环境问题、系统管理、性能优化、服务伸缩和代码发布上线上几乎没有浪费时间,让我们更加专注产品本身,快速迭代。
  • 大小: 104.9 KB
  • 大小: 66.6 KB
  • 大小: 40.2 KB
  • 大小: 46 KB
  • 大小: 41.5 KB
  • 大小: 61.1 KB
  • 大小: 63.1 KB
3
1
评论 共 4 条 请登录后发表评论
4 楼 fnet 2016-07-29 15:06
aaronluo 写道
基础设施的重复建设是企业IT的一个严重问题,微服务的架构能在一定程度上大大减少IT投入,让IT人员集中在产品和业务上。可以说微服务也是企业IT架构的一次变革,说到底也要看管理层有多大的决心了。



要有前瞻性。
3 楼 aaronluo 2016-03-10 08:27
基础设施的重复建设是企业IT的一个严重问题,微服务的架构能在一定程度上大大减少IT投入,让IT人员集中在产品和业务上。可以说微服务也是企业IT架构的一次变革,说到底也要看管理层有多大的决心了。
2 楼 jeesml 2016-03-06 00:15
支持一下很不错
1 楼 jeesml 2016-03-06 00:04
very good

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • CSS实现Tab布局

    一、布局方式 1、内容与tab分离 <div class="container"> <div class="tab-content"> <div id="item1" class="item">内容1</div> <div id="item2" class="...

  • 纯干货:css3单边倾斜-异形tab切换的实现方法

    在第一个tab上面,叠加两个背景,一个背景不倾斜,一个背景倾斜,这样就能完美实现效果了。高度要高于其他选项,这样就能遮住下面的内容。其他的选项就直接用transform: skewX(15deg)就可以了。这里主打的就是一个灵活运用,并没有实现难度。

  • 个性TAB选项卡

    <br />比较个性的网页选项卡,一改方方正正的风格,换为这种菱形的样式,看上去很生动,鼠标点击后切换,而非滑动门,代码段演示了在同一个网页中调用两个TAB选项卡,方便你的调用。<br /> <br /><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/

  • css3制作梯形,CSS3 用TABLE表格做成的梯形动效

    CSS语言:CSSSCSS确定*,*::before,*::after {box-sizing: border-box;}body {font-family: 'Open Sans', sans-serif;margin: 0;padding: 0;background-color: #333;font-size: 66.5%;}@-moz-keyframes anim {0% {width: 1...

  • CSS复杂表格的设计

    一方法: &amp;lt;!--1、先制作表格用tr th和tr td 2、若要建立叠加的表格,必须建立一个盒子通过覆盖将表格分成两份 3、新见得盒子必须绝对定位于表格。 4、然后将盒子和表格覆盖。完成 --&amp;gt;二、代码: &amp;lt;!DOCTYPE html&amp;gt; &amp;lt;html&amp;gt; &amp;lt;!--1、先制作表格用tr th和tr td 2、若要建立叠加的表格,必须建立一个盒子通过...

  • 利用Java上手微服务架构

    几乎每个人都在关注微服务架构,我们也不例外。作为一个与时俱进的程序员,我一直在努力了解这一架构,希望寻找一种通过Spring在Java中实现微服务架构的方法。

  • 一文带你读懂云原生、微服务与高可用

    云原生是一个不断变化的概念,它的定义也在不断变化,其解释权不被个人或某些组织所有。...微服务是一种将应用程序开发为小服务集合的架构方法;与标准虚拟机(VM)相比,容器有更高的效率和速度。......

  • 微服务架构与实践

    摘要:微服务出现的时间不短了,但是为什么现在才这么重视它?互联网转型要转型什么? 微服务出现的时间不短了,但是为什么现在才这么重视它?互联网转型要转型什么? 第一,以职能为中心转向以用户为中心。...

  • 罗辑思维首席架构师:Go微服务改造实践

    曾在Cisco负责流媒体工作,在微博负责feed系统研发,三年游戏行业开发经验,现任罗辑思维首席架构师,主导罗辑思维微服务改造。 内容大纲 1、改造的背景 2、改造的过程中的 Go 语言实践 3、经验总结 4、正在做...

  • css table表格 rowspan跨行后设置hover效果

    css table表格 rowspan跨行后设置hover效果 将 rowspan 的多个相关行,用一个tbody包起来,然后设置tbody:hover效果,自己写了个demo,直接上代码: &lt;!DOCTYPE html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;meta http-equiv="X-UA-Compatible" content="IE=edge"&gt; &lt;m

  • 使用CSS实现table隔行变色

    方法一:tr:nth-child(odd){background:#F4F4F4;}方法二:tr {background-color:expression((this.sectionRowIndex%2==0)?"red":"blue")}

  • previousSibling 使用问题

    在使用 previousSibling 获取某个元素的上一个兄弟节点时,节点之间不应存在有空格,否则会报错。 无标题文档 window.onload=function(){ var oLi=document.getElementById('li1'); oLi.previousSibling.style.background='red'; }

  • 手把手教你实践Service Mesh微服务架构 - 基础部署部分

    当下,已经有很大一部分公司完成了单体架构向微服务架构的迁移改造,并在疲于应对大量微服务间通信问题时,开始考虑采用Service Mesh微服务架构作为服务与服务直接通信的透明化管理框架,以插件式的方式实现各种业务...

  • 阿里十五位顶级架构师联合编写的《微服务架构解析手册》大厂面试必问

    今天的分享就到此结束啦!送大家一句话:这世界纷繁复杂千头万绪,需要一种精神自我鼓励,有风有雨更要选择坚强,是龙是虫要靠自己证明自己!

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

    向微服务架构的转换给市场上的公司带来了很多的机会。对于系统架构和开发人员,它在为用户提供新的用户体验的同时又带来了一种前所未有的控制力和速度。但在现在这样紧张的节骨眼上,感觉上是不允许出一点差错的。...

  • 基于云原生应用架构设计

    一、架构演进软件开发架构大概分为三个阶段,早期、成长期和稳定期。第一个阶段为早期单体架构,一般服务端+数据库的方式进行开发,采用三层MVC架构进行开发。主要特点:企业处于早期,业务比较简单...

  • 微服务实战(一):微服务架构的优势与不足

    【编者的话】本文来自Nginx官方博客,是微服务系列文章的第一篇,主要探讨了传统的单体式应用的不足,以及微服务架构的优势与挑战。正如作者所说,微服务架构更适合用于构建复杂的应用,尽管它也有自己的不足。 ...

Global site tag (gtag.js) - Google Analytics