分布式系统详解--架构简介(微服务)

简介: 分布式系统详解--架构简介(微服务)

分布式系统详解--架构简介(微服务)

 

       前面的一个集合我们也差不多聊完了整个分布式的基础知识,把基本上包含的内容点也简单做了一下了解和分析,在每一个基础店里面,如果细细探讨和研究,都是至少一本数的技术和含量,而这里只能起到一个抛砖引玉的过程,真正需要详细的看待分布式系统详解中的每一篇基础知识的时候,还是相当的不足。希望起到一个系统的作用,让大家在做分布式的时候有章可循当然欢迎指出错误。今天主要是就现在很火热的微服务来进行一次微微的探讨(最下面有文章快速跳转链接~~)。

           

一。什么是微服务呢?

      让我们先看一下之前的软件架构风格,Monolithic架构,也叫整体架构。这个比较适合小项目,开发简单、集中管理。缺点一大堆:功能都在本地、开发效率低、代码维护难、部署不灵活、稳定性不高、扩展性极差......

      来看看应运而生的微服务:开发一个单个小型的但有业务功能的服务,每个服务都有自己的处理和轻量通讯机制,可以部署在单个或多个服务器上。服务使用HTTP / REST等同步协议或AMQP等异步协议进行通信。也可以说他们可以彼此独立地开发和部署服务。每个服务都有自己的数据库,以便与其他服务分离。说白了:松耦合!!、

让我们来看看微服务示意图,有图才好理解(仔细看你就明白了)。

      再次强调的是,微服务运用了以业务功能的设计概念,应用程序在设计时,就能先以业务功能或流程设计先进行分割。将各个业 务功能都独立实作成一个能自主执行的个体服务,然后再利用相同的协定将所有应用程序需要的服务都组合起来,形成一个应用程序。

二、微服务规划

2.1 数据库

2.1.1 数据库的三种设计模式

(1)每个服务都各有一个数据库,同属性的服务可共享同个数据库。

(2)所有服务都共享同个数据库,但是不同表格,并且不会跨域存取。

(3)每个服务都有自己的数据库,就算是同属性的也是,数据库并不会共享。

2.1.2 数据库的可弃性

      实践微服务架构中有许多的做法。但是其中一种的做法是将数据库视作短期的储存空间而不是长期的资料。因为他们可以在上线时从事件中心回复,因此可以快速的从内存中快速存取(例:Redis)作为数据库服务器。这种做法需要将每个请求当作事件来进行广播,这样就可以从事件存储中心重播所有的事件。

2.2 沟通与事件广播

      在微服务中最重要的就是每个服务相互独立,服务和服务之间不应该有所沟通,如果要进行沟通的话,那就采用异步的方式进行沟通。在这里也是有两种方式:

2.2.1 事件存储中心

这可以让你的服务集群中广播事件,并且在每个服务中监听每个事件并做处理,令这些服务之间没有紧密的连接性,而发生的事件都会被保存在事件存储中心。这就意味着,当微服务重新上线,部署时可以重播所有事件。这造就了微服务的数据库随时可以删除、摧毁、且不需要从其他服务中获取资料。

2.2.2 讯息伫列

这令你能够在服务集群中广播消息,并传递到每一个服务,具有这个功能的有RabbitMQ,或者其他的消息中间件。

2.3 服务探索

       单个服务在上线的时候,会向服务中心注册自己的IP位置、服务内容,如此以来,服务中心不需要向每个微服务表明自己的IP位置,也不用对每个微服务单独设定,当A服务向另一个服务B呼叫的时候,会向服务中心询问B的IP位置,得到位置就可以直接进行呼叫。

      这样就可以统一集中所有服务的位置,并不是分散于每一个服务。还有一个好处,服务探索中心还可以每隔一段时间就向各个服务进行检查,如果这个服务在一定时间内没有回应,那么就可以把这个服务除掉。避免其他服务对他进行呼叫反而得不到响应。

三、微服务架构部署图

      具体如何进行搭建微服务框架,比如说涉及到的Docker容器技术、springboot、SpringCloud技术后面的博客中会一一讲解。从下一章就进行真实的实战部署代码阶段。~~

                                                              参考地址     https://zh.wikipedia.org/wiki/%E5%BE%AE%E6%9C%8D%E5%8B%99

目录
相关文章
|
1天前
|
Kubernetes 测试技术 持续交付
深入理解微服务架构及其在现代后端系统中的应用
本文将深入探讨微服务架构的核心概念、设计原则以及如何在现代后端系统中实现和优化它。我们将从微服务的定义开始,逐步展开讨论其优势、面临的挑战,以及如何克服这些挑战。同时,文章还会涉及微服务与容器化技术、持续集成/持续部署(CI/CD)的协同作用,以及微服务架构的未来发展趋势。读者将获得对微服务架构全面而深刻的理解,并能够识别在实施过程中可能遇到的陷阱和解决方案。
10 1
|
1天前
|
存储 监控 负载均衡
深入理解微服务架构中的服务发现机制
【6月更文挑战第25天】在微服务架构中,服务发现是确保各独立服务组件能够高效、可靠通信的关键环节。本文将探讨服务发现的基本原理、核心组件以及在现代云原生应用中的最佳实践,旨在为读者提供一套系统化理解和实现服务发现机制的指导思路。
|
1天前
|
消息中间件 负载均衡 持续交付
探索后端开发:微服务架构的演进与实践
【6月更文挑战第25天】本文深入探讨了微服务架构的概念、发展以及在现代后端开发中的应用。我们将通过一个虚构案例,展示如何将传统的单体应用重构为基于微服务的架构,并讨论在此过程中遇到的挑战和解决方案。文章旨在为读者提供从理论到实践的全面指导,帮助理解微服务架构的优势及其在企业级系统中的应用。
|
1天前
|
消息中间件 监控 Java
使用Java构建微服务架构的最佳实践
使用Java构建微服务架构的最佳实践
|
1天前
|
监控 Java 持续交付
构建Java微服务架构的CI/CD流程
构建Java微服务架构的CI/CD流程
|
1天前
|
分布式计算 资源调度 监控
分布式资源管理和调度架构
分布式资源管理和调度架构
|
2天前
|
监控 Java API
淘客返利平台的微服务架构实现
淘客返利平台的微服务架构实现
|
2天前
|
自然语言处理 负载均衡 Java
Java中的微服务架构实现方法*
Java中的微服务架构实现方法*
|
2天前
|
NoSQL Java 数据库
优化基于阿里云的微服务架构下的数据库访问性能
在应对大型电商项目中数据库访问性能瓶颈问题时,团队通过阿里云工具分析发现高QPS、慢查询和不合理数据交互是关键。优化措施包括:1) 索引优化,针对慢查询添加或调整索引;2) 开启读写分离,使用RDS读写分离功能和DRDS进行水平拆分;3) 引入Redis缓存热点数据,减少直接数据库访问;4) 服务化数据访问,降低跨服务数据库调用;5) 使用Sentinel进行限流和熔断,保护数据库资源。这些改进显著提升了系统响应速度和用户体验。
|
2天前
|
存储 消息中间件 API
“论微服务架构及其应用”写作框架,软考高级,系统架构设计师
论微服务架构及其应用近年来,随着互联网行业的迅猛发展,公司或组织业务的不断扩张,需求的快速变化以及用户量的不断增加,传统的单块(Monolithic)软件架构面临着越来越多的挑战,已逐渐无法适应互联网时代对软件的要求。在这一背景下,微服务架构模式(MicroserviceArchitecturePattern)逐渐流行,它强调将单一业务功能开发成微服务的形式,每个微服务运行在一个进程中;采用HTTP等通用协议和轻量级API实现微服务之间的协作与通信。这些微服务可以使用不同的开发语言以及不同数据存储技术,能够通过自动化部署工具独立发布,并保持最低限制的集中式管理。