UDN-企业互联网技术人气社区

板块导航

浏览  : 999
回复  : 0

[资源分享] 微服务与Node.js为什么会广受喜爱?

[复制链接]
胭脂粉的头像 楼主
发表于 2016-9-21 10:48:38 | 显示全部楼层 |阅读模式
  大多数项目开始时都是为了解决某一问题,比较简单,后来逐渐发展,就变得越来越大,形成一个很大的单体结构,所有的新功能都会向这个单体中添加,就像滚雪球,越来越大

  单体结构发展到一定程度之后,就会带来一些问题,例如:

  1.扩展难,并且会造成资源浪费,因为当某个局部承不住压力时,需要对整体进行扩展

  2.部署难,每次发布新功能,都需要重新部署整个项目,即使是一个很小的改动

  3.管理难,项目大,开发团队多,互相有牵绊,影响效率

  微服务

  为了解决单体结构带来的种种问题,很多公司开始尝试新的架构方式,就是微服务

  在微服务架构中,以前的单体被打散成多个小块儿,这些小块儿一起对外提供服务,每个小块儿可以使用不同的开发语言,开发者不再被限定在某个特定技术,可以自由的尝试

  如果块儿的粒度设置得合适,一个小团队用非常短的时间就可以写完一个微服务,如果某个微服务的质量或者性能不够好,也可以很快的使用其他技术重写,降低了开发风险

  各个微服务都单独部署,哪个需要性能提升,就扩展哪个的资源,不再需要全体扩展,自然降低了企业的成本

  Node.js与微服务是好搭档

  在拥抱微服务的团队中,不管是大企业,还是新兴的小公司,Node.js都被广泛使用

  主要有3个因素:

  1.高效

  Node.js的包管理器npm拥有数量惊人的模块,可以立即使用,节省大量的开发工作

  Node.js基于JS,所以前端开发人员也很容易上手,整栈都使用同一个语言,前后端使用同样的模块,便节省了大量时间

  2.性能好

  在创建高性能的实时应用时,Node.js是非常好的方案,因为他的非阻塞,事件驱动I/O模型

  GoDaddy公司是采用Node.js开发微服务的典型案例,他们给出了自己的性能数据:

  使用Node.js结合微服务后,在和之前同样的负载情况下,硬件资源只需要之前的10%

  3.开发者喜爱

  Node.js的用户增长速度惊人,每年都翻一倍,npm的流行度和成长速度都远超其他语言的包管理器

  值得注意的是,新一代的开发者尤其喜爱Node.js,他们不喜欢使用静态类型语言,例如java,c#

  在2015年,Node.js得到了Linux基金会的长期支持

  案例

  PayPal

  2013之前,PayPal是java技术栈的单体结构,2013初开始向Node.js微服务架构迁移

  开始时从一个小点开始改造,没有问题之后,再改更加重要的部分,同时还准备了一套java版本的应用作为回退方案,如果Node.js开发的应用出现问题,可以马上进行切换,而结果非常成功,便放心进行大面积迁移了

  迁移之后的效果:

  build的速度快了2倍

  代码量降低33%

  可以处理的QPS提高1倍

  响应时间提升35%

  页面快了200ms

  采用JS全栈开发后,效率提升显著,对产品的从新思考、重新启动、设计等等非常有帮助

  Netflix

  Netflix也是2013开始的Node.js微服务改造,之前是一个巨大的单体,启动一次需要40分钟,完全无法高效快速的发展

  后来网站改为单页结构,采用了Node.js,Node.js有一个非常好的理念:一次编码、到处运行,以前混合使用java和js时,好多东西得写两次,现在就简单了

  使用微服务后,每一块儿都非常好管理,可以放到容器中,这样,开发者在本机也可以运行,使本机和产品环境一致,非常有助于开发效率和质量

  GoDaddy

  GoDaddy以前主要是使用.net开发,整体结构也是单体

  经过多年的发展,发现.net并不适合,因为其没有像Node.js那样活跃的模块社区,极大的依赖微软发布的东西,完全不适合一个敏捷型公司

  后来选择Node.js是因为他的build、单元测试、集成测试、应用部署都非常容易

  改造后的效果也非常好,例如当时有一个广告带来了1亿的访问量,很好的承受住了,每秒可处理1万个请求,零宕机,他们的Node.js集群包含12台服务器

  通过微服务,实现了分布式无共享架构,结合持续集成,GoDaddy可以在1分钟之内完成产品发布

文章来源:性能与架构
文章作者:杜亦舒

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部