前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微服务与Node.js为什么会广受喜爱?

微服务与Node.js为什么会广受喜爱?

作者头像
dys
发布2018-04-04 09:42:39
7170
发布2018-04-04 09:42:39
举报
文章被收录于专栏:性能与架构性能与架构

大多数项目开始时都是为了解决某一问题,比较简单,后来逐渐发展,就变得越来越大,形成一个很大的单体结构,所有的新功能都会向这个单体中添加,就像滚雪球,越来越大 单体结构发展到一定程度之后,就会带来一些问题,例如: 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分钟之内完成产品发布


本文翻译整理自 http://thenewstack.io/enterprises-embracing-microservices-node-js/,供参考 祝大家中秋快乐

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-09-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高性能架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
持续集成
CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档