现如今,随着云计算、开源、Docker等为技术界带来革命性的影响,用户的生活方式和对应用程序的使用方式都在移动化浪潮的裹挟下发生了巨变。侧重于完备性的大而全的应用程序时代已经结束,我们正见证其向侧重于简单性的小而单一的应用转变。
单块架构与微服务架构的对比
这一转变的推动力是希望为用户提供更好的体验,所以,每个应用的创建都以特定用户为目标而尽可能地简单,并不考虑任何非必须的东西。应用普遍基于高可扩展的服务来完成它们的任务。
“微服务”架构这一全新的企业架构模式越来越受到关注,许多应用正转向基于SOA原则和领域驱动模型的微服务进行构建:
- 每个微服务封装了一种特定的功能
- 每个微服务封装了一种特定的功能
- 每个微服务都有自己的数据
- 明确定义了与其它服务的依赖关系
- 通过Web API在微服务上执行命令和查询
- 数据模型中的更新通知通过异步消息传播
- 系统使用BASE而不是ACID事务模型
下图展示了客户端如何与微服务交互以及事件如何在服务间传播:
客户端使用POST、PUT或DELETE在微服务上执行命令,并使用GET查询。当命令执行时,一个内部事件处理器会更新数据模型(这里没有显示,它包含在“查询”组件中),另外还会产生一个异步事件,将更新内容通知相关微服务。一个发布-订阅代理会作为消息通信中介。
屏幕尺寸这一移动端引入的主要限制加速了应用的这种转变。谷歌设计副总裁Matias Duarte曾经谈到,人们已经采用了一种新方法:
转向移动端的最大好处之一不在于由此产生的任何特定的设计模式,而在于屏幕太小这样一个简单的约束。你无法把所有东西都放在上面。你有更多种更有针对性的工具,而不是一个很复杂的大型工具,并且你只会用到其中的一小部分,但你要承担所有这些复杂性,即使你只用到其中一小部分。
Duarte认为,虽然这些简单应用看上去在执行复杂任务方面受到限制,但连通这些小应用非常有潜力:
其中一个前沿领域是使这些更简单、更有针对性、更直观的工具更好地协同工作,以无缝的方式做一些它们一起可以完成但单独无法进行的工作。
按照Duarte的说法,应用应该了解环境以及彼此的存在,能以自然的方式交换信息和功能。他认为移动应用的功能目前相当孤立,这是一个有很多事情可以做并能取得成果的领域。Google正在推动移动深度链接,这是向这个方向发展的第一步。
回复数字浏览风向标近期热门文章1. 50PB海量数据排序,谷歌是这么做的
2. 程序员掺和产品设计,是瞎胡闹还是有必要?
3. NoSQL类型知多少
4. 代码审查最佳实践
5. NoSQL中的分布式、容错事务
6. 如何成为出色的软件工匠
7. 持续集成已死?
8. 微服务,让开发过程更简单还是更复杂?
微信公众号技术风向标,关注IT趋势,承载前沿、深入、有温度的内容。感兴趣的读者可以搜索ID:jishuqushi,或者长按下方二维码加关注。
|