架构演进和分布式系统基础知识

微服务是从单体应用发展而来,传统单体应用非常简单,只有用户、应用系统和数据库。

这种架构非常简单,但也非常脆弱,只适合小型应用,随着系统越来越庞大,用户越来越多,这样的单体应用也就不适合了,分布式架构应运而生。

分布式架构强化了系统的稳定性和安全性,但也使得系统变得难以维护。

微服务继承了分布式架构的特点,也保留单体应用的优点,集合两者所长。

单体应用优缺点:结构简单,但是开发速度慢、启动时间长、依赖庞大等等。

微服务优缺点:易开发、理解和维护、独立的部署和启动等,但是分布式系统带来了分布式事务问题,需要管理多个服务导致服务治理会出现问题。

1)网关:路由转发 + 过滤器

2)服务注册发现:调用和被调用方的信息维护

3)配置中心:管理配置,动态更新 application.properties

4)链路追踪:分析调用链路耗时

5)负载均衡器:分发负载

6)熔断:保护自己和被调用方

常用的微服务框架

1)Dubbo: ZooKeeper + Dubbo + Spring MVC/Spring Boot

官方地址:http://dubbo.apache.org/#!/?lang=zh-cn

配套:
  通信方式:RPC
  注册中心:ZooKeeper / Redis
  配置中心:Diamond

2)Spring Cloud:全家桶+轻松嵌入第三方组件(Netflix 奈飞)

官网:http://projects.spring.io/spring-cloud/

配套
  通信方式:HTTP Restful
  注册中心:Eruka/Consul
  配置中心:Config
  断路器:Hystrix
  网关:Zuul
  分布式追踪系统:Sleuth+Zipkin

学习资料:https://blog.csdn.net/zhangweiwei2020/article/details/78646252

原文地址:https://www.cnblogs.com/jwen1994/p/11525057.html

时间: 2024-08-01 13:28:01

架构演进和分布式系统基础知识的相关文章

设计微服务架构需要掌握的基础知识

基础知识: 领域驱动设计(DDD) Restful API设计以及深入理解HTTP协议 Restful API设计框架(JAX-RS(CXF,Jersey,RestEasy) . Spring MVC . Play) 部署微服务而设计的开发框架 Spring Boot Docker 微服务运维工具 服务自动负载均衡(Nginx.HAProxy) 日志监控ELK: Elasticsearch/Logstash/Kibana 基于Docker的部署和管理

SpringCloud(1) 架构演进和基础知识简介

一.传统架构演进到分布式架构 简介:讲解单机应用和分布式应用架构演进基础知识 (画图) 高可用 LVS+keepalive 1.单体应用:开发速度慢.启动时间长.依赖庞大.等等 2.微服务:易开发.理解和维护.独立的部署和启动等等 不足:分布式系统(分布式事务问题).需要管理多个服务(服务治理) 二.微服务基础知识简介 微服务核心知识 :网关.服务发现注册.配置中心.链路追踪.负载均衡器.熔断 1.网关:路由转发 + 过滤器 /api/v1/pruduct/       商品服务 /api/v1

【搜索引擎基础知识1】搜索引擎基本架构

(一)搜索引擎的开发一般可分为下面三大部分 1.数据採集层:一般使用爬虫获取互联网的数据,重要的开源项目有Heritrxi 2.数据分析处理层:将从互联网上获取到的数据进行提取归类.分词.语义分析得出索引得内容,等待用户查询使用,重要的开源项目有Lucene 3.视图层:也用户的交互界面,如一个站点的首页 其基本架构可參考下图: [搜索引擎基础知识1]搜索引擎基本架构,布布扣,bubuko.com

三层架构之基础知识

一.概念 1.UI(表现层) 通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得.用于接收用户输入的数据和显示处理后用户需要的数据. 2.BLL:(业务逻辑层) UI层和DAL层之间的桥梁.:针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理.业务逻辑具体包含:验证.计算.业务规则等等. 3.DAL:(数据访问层) 与数据库打交道.主要实现对数据的增.删.改.查.将存储在数据库中的数据提交给业务层,同时将业务层处理的数据保存到数据库. 二.原理 用户的需求反映给界面

Android 并发编程:(一)基础知识 —— 架构和组件

本章节所有内容皆为原创,如需转载,请注明出处. http://blog.csdn.net/manoel/article/details/38462631 写在前面的话 很久没写博客了,一是因为自身水平有限,怕误人子弟:二是因为感觉没什么可写的:三是因为时间有限,要寻找工作.学习和生活之间的平衡. 最近一直在研究和梳理Android多线程编程的东西,希望能够把这些分享给大家. 想必做过Android应用开发的同学应该都会知道,多线程是一个特别"诡异"的地方.之所以称为"诡异&q

asp.net架构基础知识--页面以及全局事件

1.asp.net的请求过程,以及对应的处理请求的dll客户的请求页面由aspnet_isapi.dll这个动态连接库来处理,把请求的aspx文件发送给CLR进行编译执行,然后把Html流返回给浏览器 2.页面事件(按照事件的执行顺序排列) Page_Init:初始化值或连接 Page_Load:主要使用IsPostBack,该事件主要执行一系列得操作来首次创建asp.net页面或响应 由投递引起得客户端事件.在此事件之前,已还原页面和控件视图状态. Page_DataBind:在页面级别上调用

linux基础知识学习-linux架构

硬盘分区: 第一扇区(512bytes): MSR:master boot record (446bytes)主引导分区 partion table:(64bytes)分区表,四个.可以是主分区(primary)或者扩展分区(Extended), 每个表指向磁盘某段区间.最多只有一个扩展分区,扩展分区里面可以扩展多个逻辑分区.其余扇区(柱面(cylinder)):实际存储的地方 linux 中(\etc/fstab):IDE  总线形式不同 (a~d)/dev/hda SATA,SCSI,USB

分布式系统基础架构

Hadoop是一个由Apache基金会所开发的分布式系统基础架构.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储.Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS.HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上:而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序.HDF

软件开发架构、网络基础知识、osi七层模型

一.软件开发的架构 涉及到两个程序之间通讯的应用大致可以分为两种: 第一种是应用类:qq.微信.网盘.优酷这一类是属于需要安装的桌面应用 第二种是web类:比如百度.知乎.博客园等使用浏览器访问就可以直接使用的应用 这些应用的本质其实都是两个程序之间的通讯.而这两个分类又对应了两个软件开发的架构 C/S架构: C/S即:Client与Server ,中文意思:客户端与服务器端架构,这种架构也是从用户层面(也可以是物理层面)来划分的. 这里的客户端一般泛指客户端应用程序EXE,程序需要先安装后,才