前段时间做了一个有关微服务的单子,也就大致的学习了一下,不过目前也还不够深入,只是大致知道微服务是在怎么运作。记得看过一个帖子就是说,目前microservice够火,只要跟这个关键词扯点关系就人满为患,不管是培训还是亚马逊的书价,一起看看微服务到底是个什么鬼?
微服务
引用块内容
微服务正在博客、社交媒体讨论组和会议演讲中获得越来越多的关注,在Gartner的2014 Hype Cycle上它的排名非常靠前。同时,软件社区中也有不少持怀疑论者,认为微服务不是什么新东西。Naysayers认为这就是SOA架构的重新包装。然而,尽管存在着不同的争论,微服务架构模式却正在为敏捷部署以及复杂企业应用实施提供巨大的帮助。
SOA:面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。
一句话来谈SOA和微服务的区别,即微服务不再强调传统SOA架构里面比较重的ESB企业服务总线,同时SOA的思想进入到单个业务系统内部实现真正的组件化。
微服务可以在“自己的程序”中运行,并通过“轻量级设备与HTTP型API进行沟通”。
微服务–框架
传统的WEB开发架构【Monolithic】
Monolithic比较适合小项目,
优点是:
- 开发简单直接,集中式管理
- 基本不会重复开发
功能都在本地,没有分布式的管理开销和调用开销
缺点是:
开发效率低
- 代码维护难
- 部署不灵活
- 稳定性不高
扩展性不够
微服务框架Microservice Architecture
官网定义
The microservice architectural style is an approach to developing a
single application as a suite of small services, each running in its
own process and communicating with lightweight mechanisms, often an
HTTP resource API. These services are **built around business
capabilities** and independently deployable by fully automated
deployment machinery. There is a bare minimum of centralized
management of these services , which may be written in different
programming languages and use different data storage technologies.
– James Lewis and Martin Fowler
X轴代表运行多个负载均衡器之后运行的实例,Y轴代表将应用进一步分解为微服务 (分库),数据量大时,还可以用Z轴将服务按数据分区(分表)
特征是:
分布式服务组成的系统
- 按照业务而不是技术来划分组织
- 做有生命的产品而不是项目
- Smart endpoints and dumb pipes(我的理解是强服务个体和弱通信)
- 自动化运维(DevOps)
- 容错
- 快速演化