微服务生态系统
这一篇是对 Go Micro 官方博客介绍微服务的文章翻译。
在后续的文章中,我会写一些在公司使用 Go Micro
开发微服务的实践经验以及对官方博客的翻译。
先讨论一下软件开发的特性。
变化总是在进行中,我们越来越接近一个被技术和商业驱动的社会,维持竞争能力变得越来越困难,如果采用低效的平台、结构和代码,组织将会越来越低效。创立十年以上的技术公司正在经历扩张带来的技术痛苦,但大部分仍然采用旧有的技术解决新问题。
是时候把世界上最成功公司的竞争优势分享给其他人了,现在我们讨论微服务,一种构建核心技术优势的手段。
什么是微服务?
微服务是一种软件架构模式,用于将大型架构拆解成小型模块,服务之间使用灵活的协议进行通信,使各个服务专注于自身的业务。
用学院派的定义来说明微服务:
- Loosely coupled service oriented architecture with a bounded context
- An approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms
微服务并不是一个新的概念,而是一种新的服务架构模式,早在 unix
中就存在类似的理念(进程和管道)。
微服务架构的哲学:
- 服务是很小的,单一的服务只做单一的业务,类似
unix
中的Do one thing and do it well
- 应该适合进行自动化部署和测试,可以轻易的减轻运维和管理的负担
- 系统必须有很好的容错性,健壮性
为什么是微服务?
随着组织的技术和人员扩张,庞大的代码已经越来越难以维护。我们都认为 Twitter
会失败,因为他们尝试在现有的巨大的系统上不断进行产品需求的开发。微服务的理念让 Twitter
分解整个应用为很小服务,每个服务都被单个小型团队负责。每个团队都为整个系统负责,而每个服务又可以单独的进行部署。
[图片上传失败…(image-59fe77-1512705588249)]
我们从第一手的经验知道了微服务让开发周期进行的更快,提高了生产力,构造优秀的可扩展系统
我们看一下其中的一些好处:
- 更容易进行开发:不同的团队根据不同的需求,管理好自己的服务即可
- 更容易理解:微服务很小,经常是1000行或者更少
- 更容易频繁的部署新版本:服务很容易独立的进行部署、扩展和管理
- 提高了错误的容忍度和错误隔离:单个服务的错误不会对其他服务造成影响
- 提高了执行的速度:团队独立的开发、部署和管理微服务将使需求实现的更快
- 服务可以重用:unix的设计理念影响了微服务,这让你可以复用很多服务
什么是 Micro?
Micro
是一个微服务的生态系统,专注于为当代科技驱动的企业提供产品、服务和解决方案。我们计划为企业提供微服务资源以提高企业的技术水平。从早期的产品原型到大规模产品的部署都有解决方案。
我们看到了行业的基本的转折点正在到来,摩尔定律在起作用,我们拥有了越来越多的能力,而我们并不能完全了解这些全新的能力,当前的工具和开发实践不能在新的领域再起作用。开发者没有获得工具来从庞大的代码系统转向更加高效的设计架构。大部分公司会经历到一个节点即大量的研发投入到庞大的系统中,但没有产生相应的产出。Netfix,Twitter
等公司都经历了这些,结局都是构建自己的微服务平台。
我们的愿景是提供基础的工具让任何人都能受益于微服务,我们已经开始行动,基于开源的微服务工具包 Micro ,接下来将会有一系列的文章介绍各个工具。