Microservice是微型-服务的合成词,一个近年来很新的buzzword。Buzzword意为每个人都喜欢讲的流行术语(大数据是另一个有趣的buzzword)。

像其他工程名词一样,微服务并没有严格的定义。写这篇笔记的时候搜到一个定义如下:

微服务架构

微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP协议的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应当尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。

单纯看这样的描述并不会有什么感觉,因此还是先介绍下微服务相关的一些技术背景。从上面的定义对进程、协作的强调可以看出,微服务是强调并行化、可扩展的模式,因此首先从可扩展性角度分析微服务的价值。

可扩展性(scalability)也是被广泛讨论的话题。为了优化软件的运行速度,可以纵向扩展(升级运行软件的硬件),也可以横向扩展(增加更多的硬件)。在横向扩展的基础上,又有三种可用的策略:


The Scale Cube

  • X. 在网络中部署同一软件的多个拷贝,并使用负载均衡手段在软件的各个副本之间分配任务

  • Y. 将软件按照功能模块拆分,并将不同模块部署到不同的机器上

  • Z. 数据分区,把每一区的数据放在不同的机器上存储和处理

而应用总的可扩展性(图中表示为长方体的体积)与应用在这三个方面的可扩展性相关。传统网站应用(CRUD/MVC/RDBMS/3-tier/..)较为容易实现第一种扩展方式。如果要在其他坐标上扩展,则需要首先解答更多的问题:

  1. 如何保证拆分软件模块的正确性(Y)?

  2. 如何保证数据库的拆分不会降低性能(Z)?

  3. 如何对待分布式系统中的一致性等问题?

Unix哲学,Microservices和DDD (2)相关推荐

  1. 【转载】Unix编程艺术——Unix哲学

    Unix编程艺术主要介绍了Unix系统领域中的设计和开发哲学.思想文化体系.原则与经验.此文大致摘录了Unix的哲学. web程序员也应该看看此书,软件开发和web开发很多地方都是相通的.看完之后,我 ...

  2. 回顾一下Unix哲学

    Unix哲学是一些先哲们多方位阐述的,有多种说法.可以概括为以下几点: 模块原则:使用简洁的接口拼合简单的部件. 清晰原则:清晰胜于机巧. 组合原则:设计时考虑拼接组合. 分离原则:策略同机制分离,接 ...

  3. Unix哲学学习笔记

    语句摘录: Preface 知识和专能差异巨大,凭借知识可以推断该做什么,而专能可以让你在无意见,条件反射似的把事情做好. 少一些技术,多一些共享文化:显见和显微的,直观和潜流的,不止与方法,更重乎理 ...

  4. Unix 哲学的一些原则——《Unix 编程艺术》

    Unix 哲学是在 Unix 先哲们和 Unix 本身所作出的榜样中体现出来的.可以概括为以下原则: 模块原则:使用简洁的接口拼合简单的部件. 用清晰的接口把若干简单的模块组合成一个复杂软件. 这样, ...

  5. unix哲学:集思广益的智慧(第一章 )

    Unix哲学的几条准则: (1)小即是美. (2)让每一个程序只做好一件事情. (3)尽快建立原型. (4)舍高效率而取可移植性. (5)使用纯文本文件来存储数据. (6)充分利用软件的杠杆效应. ( ...

  6. Unix哲学17条原则的新感悟

    现在,说到操作系统,谈论最多的就是Android,ios,Linux,mac os,windows,已经很少有人会使用到unix系统了,除了一些企业内部的系统,和编程爱好者社区会交流外,基本上已经绝迹 ...

  7. UNIX哲学之echo

    今天看了对三毛自杀的原因分析,一个心理学专家从精神学科专业角度分析的,他先从三毛的笔名echo说起,echo是希腊神话中的人物,因多嘴被赫拉惩罚失去了说话的能力,只能重复别人说的最后三个字 .此专家分 ...

  8. Unix编程艺术——Unix哲学

    题外话:一个月之前,刚刚读完<unix编程艺术>这本据说有些"愤青"的书,读书的过程,感觉是种享受,不但unix本身是艺术,连作者著书也是艺术,本想就本书写篇读感,但是 ...

  9. 60行C代码的shell领略Unix哲学之美

    来自<60行C代码实现一个shell> 60行C代码实现一个shell.在实现它之前,先看看这样做的意义. 美是有目共睹的.Unix之美,稍微体会,便能得到. 1969年,Unix初始,没 ...

最新文章

  1. Bio-protocol首届生物实验短视频大赛
  2. AssetBundle——外部加载资源Asset
  3. python 模板引擎 对比_Python Web开发模板引擎优缺点总结
  4. 网站开发的小知识参考(慢慢收集备用)
  5. 2018广技师C语言专插本试题,2018年成功插本广技师 ,分享备考经验!附:复习时间表...
  6. jQuery插件:Tiny Scrollbar滚动条插件(滚动条美化、默认滚动条)
  7. 关于计算机网络维护毕业论文,计算机专业毕业论文---计算机网络故障处理及维护方法...
  8. 5v继电器模块实物接线_继电器驱动无刷电机正反转(单向电调)
  9. vc++网络安全编程范例(15)-导出会话密钥
  10. 韦根协议c语言,哪为高手懂韦根协议啊。怎么用单片机来读取韦根26的ID卡的信息,以下为我写的程序,ID...
  11. Nginx 去除多斜杠 (//)
  12. 鸿蒙os下载到电脑上,华为鸿蒙os系统官网
  13. mysql查询各专业人数_查询各专业的学生数。
  14. 喝酸奶八大误区[zt]
  15. php.ini reporting,php.ini中error_reporting参数配置
  16. 大学生活快要结束了,才想要珍惜~~~
  17. 川大计算机专业导师冯子亮,川大计算机学院硕导名单_跨考网
  18. raptor的基本符号有_Raptor 基本符号有( )。
  19. 无需域名实现frp多端口内网穿透
  20. CSS——引入阿里字体图标步骤

热门文章

  1. python:字符串常用处理函数:
  2. python 之GUI设计:messabebox组件
  3. 【文本信息抽取与结构化】深入了解关系抽取你需要知道的东西
  4. 【模型解读】深度学习网络之Siamese Network网络
  5. 【caffe解读】 caffe从数学公式到代码实现1-导论
  6. Sharpdevelop学习
  7. 数据库存在即更新的高并发处理 - 转
  8. 在继承类中,父类在子类中初始化问题,已解决
  9. eclipse中多个工程编译到同一个目录下
  10. 网页设计必备工具 firefox Web Developer插件 CSS工具组教程