栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

微服务架构设计

Java 更新时间:发布时间: 百科书网 趣学号
开篇,什么是微服务

在搞清楚什么是微服务之前,我们先来弄明白什么是分布式系统。

(插图1)

随着网站流量和业务复杂度不断加剧,单机系统势必向多机系统转化,多机系统比单机系统更容易扩展,也更方便对系统整体计算和存储能力进行提升,这个多机系统就是分布式系统。

(插图2)

分布式系统,是由若干个计算机节点组成,这些节点之间通过网络进行通信,以便为共同任务而协同作业。

(插图3)

微服务与分布式系统到底是什么关系? 微服务系统也是一种分布式系统,微服务是一种设计理念,它基于分布式系统,为解决系统复杂度和耦合性过高问题提供了解决方案。

(插图4)

随着分布式系统业务复杂度逐渐攀升,微服务应运而生,它体现的是分而治之和高内聚低耦合的设计思想。微服务化设计就是对复杂系统解耦和重组的过程。

(插图5)

微服务,是把双刃剑

任何事物都有两面性,微服务也不例外,它为我们带来好处的同时,也会让我们付出一定的代价。

(插图6)

微服务主张对系统公共和通用功能进行提取,由此减少了重复性的建设。

(插图7)

微服务可使用不同的技术独立开发,使得开发模式更灵活,也便于问题的独立解决。

(插图8)

各微服务之间接口众多,增加代码量的同时,也加大了系统维护的难度。如沟通成本的提升了,问题定位变得更困难了,系统监控的开销也增大了。

(插图9)

微服务化,该如何落地

关于微服务的落地,业界有个知名的方法论,叫领域驱动设计,英文是Domain-Driven Design,简称DDD。

(插图10)

该方法论立足于为建立一个边界清晰、可复用的企业级中台业务模型提供理论依据,可用于指导微服务的边界划分和中台领域建模的设计。

(插图11)

DDD分为战略和战术两个维度。战略是指在业务层面上进行抽象和建模,战术则是在技术层面上考虑如何落实抽象和设计。

(插图12)

具体实施可大致分为三个步骤:

首先对业务系统进行切分,根据业务功能划分为若干个业务领域,然后逐一对各业务领域的功能属性进行梳理,将公共功能模块提取出来。

(插图9)

然后定义主领域模型,将功能逻辑相对完整的领域设立为主领域,以主领域模型为基准,横向扫描其他领域模型,将重复的公共模块合并到主领域模型,然后重构主领域模型。

(插图10)

最后在技术层面进行落地,以领域模型为依据,在系统技术层面上提供解决方案,完成微服务的拆分和设计。

(插图11)

微服务,有哪些开源框架

微服务在技术实现层面,业界有哪些主流的开源框架?它们各自有哪些优势和不足?

(插图12)

Spring Cloud,为构建微服务架构应用提供了一整套基础工具和解决方案,降低了微服务开发和管理的难度。它是基于Spring Boot 框架的,Spring Boot是快速构建Spring应用的脚手架。

Dubbo ,是阿里开源的一款高性能轻量级的Java RPC 框架,它提供了三个核心能力,面向接口的远程方法调用、智能容错与负载均衡、服务自动注册和发现。

Tars,是腾讯内部使用的微服务框架,多年实践成果总结而成的开源项目,包含一整套开发框架与管理平台,兼顾多语言、易用性、高性能与服务治理,其理念是让开发更聚焦业务逻辑,让运营更高效。

Thrift,也是一个 RPC 框架,跨语言能力较强。它具有功能强大的软件堆栈和代码生成引擎,可构建在 C++、Java、Python、PHP 等多种语言间无缝结合的、高效的服务。

gRPC,是谷歌开源的高性能通用 RPC框架。gRPC 基于 HTTP/2 标准设计,带来诸如双向流、流控、头部压缩与单 TCP 连接上的多路复用请求等特性,这些特性使得其在移动设备上表现更好,更省电和节省空间占用。

微服务框架的核心组件

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/986888.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号