什么是软件架构?
软件架构是一个系统的基本组织,体现在系统的各个组件(如web服务器,应用服务器,数据库,存储,通信等),组件之间的关系,以及系统的外部环境(如发布环境,共享服务器,专用服务器,云发布等)。 还包括指导系统设计和演化的原理。
什么是微服务软件架构?
微服务就是开发一个单纯的,小型的,有意义的功能作为一个单一服务。每个服务都有自己的进程,通过轻量级的协议进行通信,发布在一个或者多个服务器上。
微服务架构的好处
- 每个微服务都是一个小的,专注实现一个特定功能或商务需求的服务
- 微服务可以由一个小的开发组独立的发布(一般2到5个开发者)
- 微服务松耦合,这意味着服务之间可以独立的开发和部署
- 微服务可以由不同的开发语言开发
- 微服务允许持续集成工具容易且灵活的自动集成部署(如Jenkins, Hudson, bamboo 等).
- 新的团队成员可以很快融入到开发中
- 微服务易于理解, 开发人员容易修改和维护, 这是因为这种架构下服务之间的代码都是独立的,团队很小,目标明确
- 微服务允许你充分采用最新的技术(框架,编程语言,编程实践等)
- 微服务仅包含商业逻辑代码,不会混合HTML, CSS等其它UI组件
- 规模扩大时微服务很容易扩展
- 微服务可以部署在中低档的服务区上
- 易于继承第三方的服务
- 每个微服务都有自己的存储能力。但这一点依赖你的需求, 微服务也可以使用同一的数据库如Mysql, Oracle
微服务的不足
- 微服务可能带来过多的操作
- 要求要有DevOps技能
- 可能会有重复的工作
- 分布式系统管理起来相对复杂
- 由于分布式部署的问题分析问题比较困难
- 当服务很多的时候管理整个系统就很麻烦
微服务适合什么样的需求?
当你需要支持跨屏的应用(比如桌面,web,手机,智能电视,可穿戴设备或者未来你不知道的情况)。
(译者按:微服务岂止这些?当你的应用规模急速扩大时,需要将已有的架构进行重构,减少系统组件的紧耦合,就可以考虑微服务的架构)
哪些公司使用了微服务的架构
很多规模很大的物联网公司都采用了微服务的架构,如Twitter, Netflix, Amazon, eBay, 国内的大型互联网公司如淘宝等,都从最初的铁板一块,组件都整体糅合在一起架构演化成微服务的架构。
(译者按:据公开的资料, 07年淘宝开始走向服务化)
微服务之间如何通信
如何实现依赖你的需求。一般开发人员会使用HTTP/REST + JSON或Protobuf,但是法无定式,有很多的选择。
为何现在人人都在谈论微服务?
SOA的概念都有15年了,随着RESTful的web服务的流行和更便利的JSON格式的广泛采用, 创建可以互相调用服务更加的容易和快捷。
: » 微服务架构入门
原创文章,作者:carmelaweatherly,如若转载,请注明出处:https://blog.ytso.com/251484.html