第一章节我们主要是介绍微服务 springCloud的架构和分布式的区别

但是后面会主要介绍netflix公司与Alibaba公司的两套架构

系统架构

   **概述**
随着互联网的发展,网站应用的规模不断扩大。需求的激增,带来的是技术上的压力。
系统架构也因此也不断的演进、升级、迭代。
从单一应用,到垂直拆分,到分布式服务,到SOA,以及现在火热的微服务架构
集中式架构
概述
当网站流量很小时,只需一个应用
将所有功能都部署在一起,以减少部署节点和成本
从头到尾就一个工程,部署的时候 , 只需要打成一个war包
特点
代码耦合,开发维护困难
无法针对不同模块进行针对性优化
无法水平扩展
单点容错率低,并发能力差
垂直拆分
概述
当访问量逐渐增大,单一应用无法满足需求,此时为了应对更高的并发和业务需求,我们根据业务功能对系统进行拆分
特点
系统拆分实现了流量分担,解决了并发问题
可以针对不同模块进行优化
方便水平扩展,负载均衡,容错率提高
系统间相互独立,会有很多重复开发工作,影响开发效率

系统架构分类

微服务
概述
微服务就是把原本臃肿的一个项目的所有模块拆分开来并做到互相没有关联,甚至可以不使用同一个数据库
微服务的特点
单一职责
微服务中每一个服务都对应唯一的业务能力,做到单一职责
服务拆分粒度很小
例如一个用户管理就可以作为一个服务
面向服务
面向服务是说每个服务都要对外暴露服务接口API
并不关心服务的技术实现
做到与平台和语言无关
不限定用什么技术实现,只要提供Rest的接口即可
自治
自治是说服务间互相独立,互不干扰
分布式服务
概述
当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务
分布式,就是将偌大的系统划分为多个模块(这一点和微服务很像)部署到不同机器上
因为一台机器可能承受不了这么大的压力
各个模块通过接口进行数据交互,其实 分布式也是一种微服务。
特点
将基础服务进行了抽取,系统间相互调用,提高了代码复用和开发效率
系统间耦合度变高,调用关系错综复杂,难以维护
微服务和分布式的区别
微服务与分布式都是把模块拆分开来变为独立的单元,提供接口来调用
他们本质的区别在于目标的不同,
分布式的目标是
一台机器承受不了的,或者是成本问题 , 不得不使用多台机器来完成服务的部署
微服务的目标
只是让各个模块拆分开来,不会被互相影响,比如模块的升级亦或是出现BUG等等...
微服务要面临的问题
服务治理(SOA)
概述
当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,
此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。
(SOA)用于提高机器利用率的资源调度和治理中心
问题
服务越来越多,需要管理每个服务的地址
调用关系错综复杂,难以理清依赖关系
服务过多,服务状态难以管理,无法根据服务情况动态管理
服务治理要做什么
服务注册中心,实现服务自动注册和发现,无需人为记录服务地址
服务自动订阅,服务列表自动推送,服务调用透明化,无需关心依赖关系
动态监控服务状态监控报告,人为控制服务状态
1.监听服务有没有宕机
部署很多服务后 ,如果监听到服务有没有宕机
2.负载均衡,
一个服务吃不消,要部署多个服务,部署的多个服务均衡调用
3.熔断
服务出现了问题,不能让程序卡在那里
4.限流
限流就是针对超过预期的流量,通过预先设定的限流规则选择性的对某些请求进行限流“熔断”
5.降级
当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或换种简单的方式处理,
从而释放服务器资源以保证核心交易正常运作或高效运作
6.网关
统一管理API的一个网络关口、通道,是整个微服务平台所有请求的唯一入口

未完。。。

【笔记】01 -- Spring-Cloud介绍的更多相关文章

  1. 黑马_13 Spring Boot:01.spring boot 介绍&&02.spring boot 入门

    13 Spring Boot: 01.spring boot 介绍&&02.spring boot 入门 04.spring boot 配置文件 SpringBoot基础 1.1 原有 ...

  2. [转帖]微服务框架Spring Cloud介绍 Part1: 使用事件和消息队列实现分布式事务

    微服务框架Spring Cloud介绍 Part1: 使用事件和消息队列实现分布式事务 http://skaka.me/blog/2016/04/21/springcloud1/ APR 21ST,  ...

  3. Spring Cloud介绍 Spring Cloud与Dubbo对比

    spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁.决策竞选.分布式会话和集群状 ...

  4. 一、Spring Cloud介绍

    springcloud 介绍 研究了一段时间spring boot了准备向spirng cloud进发,公司架构和项目也全面拥抱了Spring Cloud.在使用了一段时间后发现Spring Clou ...

  5. 微服务架构之spring cloud 介绍

    在当前的软件开发行业中,尤其是互联网,微服务是非常炽热的一个词语,市面上已经有一些成型的微服务框架来帮助开发者简化开发工作量,但spring cloud 绝对占有一席之地,不管你是否为java开发,大 ...

  6. Spring Cloud介绍

    Spring Cloud中国社区博客 Spring Cloud发展到2016年,国内关注的人越来越多,但是相应学习交流的平台和材料比较分散,不利于学习交流,因此Spring Cloud中国社区应运而生 ...

  7. Spring Cloud认知学习(一):Spring Cloud介绍与Eureka使用

    目录 Spring Cloud的介绍 微服务的介绍 Spring Cloud出现的原因: 常见场景: 微服务的优劣势: Spring Cloud版本问题 版本介绍 与Spring Boot版本对应关系 ...

  8. 笔记:Spring Cloud Zuul 快速入门

    Spring Cloud Zuul 实现了路由规则与实例的维护问题,通过 Spring Cloud Eureka 进行整合,将自身注册为 Eureka 服务治理下的应用,同时从 Eureka 中获取了 ...

  9. 笔记:Spring Cloud Feign Ribbon 配置

    由于 Spring Cloud Feign 的客户端负载均衡是通过 Spring Cloud Ribbon 实现的,所以我们可以直接通过配置 Ribbon 的客户端的方式来自定义各个服务客户端调用的参 ...

  10. 笔记:Spring Cloud Feign Hystrix 配置

    在 Spring Cloud Feign 中,除了引入了用户客户端负载均衡的 Spring Cloud Ribbon 之外,还引入了服务保护与容错的工具 Hystrix,默认情况下,Spring Cl ...

随机推荐

  1. Java实现常见查找算法

    Java实现常见查找算法 查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算,例如编译程序中符号表的查找. 线性查找 线性查找(Linear Search)是一种简单的查 ...

  2. 简述Spring Cache缓存策略

    一.简介 Spring框架提供了一种名为Spring Cache的缓存策略.Spring Cache是一种抽象层,它提供了一种方便的方式来管理缓存,并与Spring应用程序中的各种缓存实现(如EhCa ...

  3. gestureRecognition

    这段代码定义了一个名为 gestureRecognition 的函数,它用于识别手势并显示在摄像头或指定图像上.以下是对代码的详细注释:1. 初始化一个空字符串 ges,用于存储手势结果.如果 sel ...

  4. xgo多线程

    import threading import time #导入xgoedu from xgoedu import XGOEDU from xgolib import XGO #导入xgolib  # ...

  5. js数据结构--队列

    <!DOCTYPE html> <html> <head> <title></title> </head> <body&g ...

  6. C#_TCPClient异步连接和接收消息

    //c#不愧是全能型的语言,异步连线程都省了 class State { public byte[] bufferCache; public TcpClient tcpClient; } ... pr ...

  7. GitHub Universe 2023:AI 技术引领软件开发创新浪潮

    GitHub 是全球领先的软件开发和协作平台,数百万开发者和企业在此分享.学习和创建卓越的软件.同时 GitHub 处在 AI 技术前沿,通过其先进的 AI 技术增强开发者体验并赋能未来软件开发的使命 ...

  8. C语言已知四位数3025具有一个特殊性质:它的前两位数字30与后两位数字25之和是55,而55的平方正好等于3025。编程找出所有具有这种性质的四位数。

    #include<stdio.h> void main() { int n, i, j; for (n = 1000; n < 10000; n++) { i = n / 100; ...

  9. 逻辑回归(Logistic Regression) ----转载

    概要: 1. 介绍Logistic Regression的数学模型,推导并详细解释求解最优回归系数的过程:2. Python实现Logistic Regression的基本版:3. 介绍sklearn ...

  10. MySQL-mysqldump 报错:[ERROR] unknown variable 'local_infile=1'.

    版权声明:原创作品,谢绝转载!否则将追究法律责任. ----- 作者:kirin mysqldump: [ERROR] unknown variable 'local_infile=1'. 解决方法: ...