欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Unix哲学,Microservices和DDD (2)

发布时间:2025/3/20 编程问答 42 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Unix哲学,Microservices和DDD (2) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

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

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

微服务架构

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

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

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


The Scale Cube

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

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

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

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

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

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

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

  • 总结

    以上是生活随笔为你收集整理的Unix哲学,Microservices和DDD (2)的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。