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

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

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

 

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

           

一。什么是微服务呢?

      让我们先看一下之前的软件架构风格,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

目录
相关文章
|
5天前
|
缓存 负载均衡 JavaScript
探索微服务架构下的API网关模式
【10月更文挑战第37天】在微服务架构的海洋中,API网关犹如一座灯塔,指引着服务的航向。它不仅是客户端请求的集散地,更是后端微服务的守门人。本文将深入探讨API网关的设计哲学、核心功能以及它在微服务生态中扮演的角色,同时通过实际代码示例,揭示如何实现一个高效、可靠的API网关。
|
3天前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
3天前
|
Dubbo Java 应用服务中间件
服务架构的演进:从单体到微服务的探索之旅
随着企业业务的不断拓展和复杂度的提升,对软件系统架构的要求也日益严苛。传统的架构模式在应对现代业务场景时逐渐暴露出诸多局限性,于是服务架构开启了持续演变之路。从单体架构的简易便捷,到分布式架构的模块化解耦,再到微服务架构的精细化管理,企业对技术的选择变得至关重要,尤其是 Spring Cloud 和 Dubbo 等微服务技术的对比和应用,直接影响着项目的成败。 本篇文章会从服务架构的演进开始分析,探索从单体项目到微服务项目的演变过程。然后也会对目前常见的微服务技术进行对比,找到目前市面上所常用的技术给大家进行讲解。
14 1
服务架构的演进:从单体到微服务的探索之旅
|
2天前
|
Cloud Native 安全 API
云原生架构下的微服务治理策略与实践####
—透过云原生的棱镜,探索微服务架构下的挑战与应对之道 本文旨在探讨云原生环境下,微服务架构所面临的关键挑战及有效的治理策略。随着云计算技术的深入发展,越来越多的企业选择采用云原生架构来构建和部署其应用程序,以期获得更高的灵活性、可扩展性和效率。然而,微服务架构的复杂性也带来了服务发现、负载均衡、故障恢复等一系列治理难题。本文将深入分析这些问题,并提出一套基于云原生技术栈的微服务治理框架,包括服务网格的应用、API网关的集成、以及动态配置管理等关键方面,旨在为企业实现高效、稳定的微服务架构提供参考路径。 ####
19 5
|
4天前
|
Kubernetes 负载均衡 Cloud Native
云原生架构下的微服务治理策略
随着云原生技术的不断成熟,微服务架构已成为现代应用开发的主流选择。本文探讨了在云原生环境下实施微服务治理的策略和方法,重点分析了服务发现、负载均衡、故障恢复和配置管理等关键技术点,以及如何利用Kubernetes等容器编排工具来优化微服务的部署和管理。文章旨在为开发者提供一套实用的微服务治理框架,帮助其在复杂的云环境中构建高效、可靠的分布式系统。
17 5
|
4天前
|
负载均衡 监控 Cloud Native
云原生架构下的微服务治理策略与实践####
在数字化转型浪潮中,企业纷纷拥抱云计算,而云原生架构作为其核心技术支撑,正引领着一场深刻的技术变革。本文聚焦于云原生环境下微服务架构的治理策略与实践,探讨如何通过精细化的服务管理、动态的流量调度、高效的故障恢复机制以及持续的监控优化,构建弹性、可靠且易于维护的分布式系统。我们将深入剖析微服务治理的核心要素,结合具体案例,揭示其在提升系统稳定性、扩展性和敏捷性方面的关键作用,为读者提供一套切实可行的云原生微服务治理指南。 ####
|
5天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
1月前
|
NoSQL Java Redis
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
Redis分布式锁在高并发场景下是重要的技术手段,但其实现过程中常遇到五大深坑:**原子性问题**、**连接耗尽问题**、**锁过期问题**、**锁失效问题**以及**锁分段问题**。这些问题不仅影响系统的稳定性和性能,还可能导致数据不一致。尼恩在实际项目中总结了这些坑,并提供了详细的解决方案,包括使用Lua脚本保证原子性、设置合理的锁过期时间和使用看门狗机制、以及通过锁分段提升性能。这些经验和技巧对面试和实际开发都有很大帮助,值得深入学习和实践。
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
|
3月前
|
NoSQL Redis
基于Redis的高可用分布式锁——RedLock
这篇文章介绍了基于Redis的高可用分布式锁RedLock的概念、工作流程、获取和释放锁的方法,以及RedLock相比单机锁在高可用性上的优势,同时指出了其在某些特殊场景下的不足,并提到了ZooKeeper作为另一种实现分布式锁的方案。
107 2
基于Redis的高可用分布式锁——RedLock
|
6天前
|
NoSQL Redis
Redis分布式锁如何实现 ?
Redis分布式锁通过SETNX指令实现,确保仅在键不存在时设置值。此机制用于控制多个线程对共享资源的访问,避免并发冲突。然而,实际应用中需解决死锁、锁超时、归一化、可重入及阻塞等问题,以确保系统的稳定性和可靠性。解决方案包括设置锁超时、引入Watch Dog机制、使用ThreadLocal绑定加解锁操作、实现计数器支持可重入锁以及采用自旋锁思想处理阻塞请求。
40 16