六Spring Cloud

回顾之前的:

  • javaSE
  • 数据库
  • 前端
  • Servlet
  • HTTP
  • Mybatis
  • Spring
  • SpringMVC
  • SpringBoot
  • Dubbo、Zookeeper、分布式基础
  • Maven、Git
  • Ajax、json

微服务产生的背景

单体架构

单体业务的问题:

  • 随着业务的发展,开发变得越来越复杂
  • 修改、新增某个功能,需要对整个系统进行车市,从新部署
  • 一个模块出现问题,横坑能导致整个系统的崩溃
  • 对团队同事对数据进行管理,容易产生安全漏洞
  • 各个模块视同同一种的技术框架,局限性太大,很难根据业务选择最适合的技术架构
  • 模块的内容太复杂,如果员工离职,可能要横长时间才能完成任务的交接

为了解决上述问题微服务架构营运而生,简单来说,微服务就是将一个单体应用拆分成

若干个小型的服务,协同完成系统功能的一种架构模式,在系统架构层面进行解耦合,讲一个复杂的问题拆分成若干个简单的问题。

这样的好处对于每一个简单的问题,开发维护部署的难度降低很多,就可以实现自治,可以自主选择最适合的技术框架,提高了项目的灵活性

微服务框架不仅仅是简单的拆分,拆分之后的各个服务之间还要进行通信,否则就无法协同完成需求

微服务之间只需要制定统一的协议即可,至于每个微服务之间使用什么样的技术框架来完成,统统不要关心

这种松耦合的方式开发,部署都变得灵活同事系统更容易扩展,减低了开发、运维的难度。

程序员的境界

1.使用框架

2.掌握技术 自己写框架

3.解决问题

分布式服务

微服务的优点

  • 各个服务之间实现了松耦合,彼此之间不再关注对方是使用什么语言开发,什么技术,只需要保证自己的接口的正常访问,通过标准协议访问其他的接口即可
  • 各个微服务之间独立自治,只需要专注的做好自己的业务即可
  • 微服务是一种去中性化的架构方式,相当于用零件的方式凭借一台机器,如果米格零件出现问题,可以随时替换从而保证机器的正常运行

微服务的不足

  • 各个服务之间是利用系统调用使用的,如果某个微服务的远程调用出现问题,导致微服务不可用,就可能产生级联反应,造成整个系统的崩溃
  • 如果某个需求要调用多个微服务,如何来保证数据的一致性
  • 相比较于单体应用微服务学习难度会增加,对于团队新加入的员工来讲如何快速上手微服务是个问题

微服务的设计原则

从大到小、提炼出核心需求、搞清楚服务间的交互关系,先拆分粒度较大的服务,然后再根据具体的业务需求逐步细化服务粒度,最终形成一套合理的微服务系统架构

  • 微服务的粒度不能太呆也不能太小,避免出现多个微服务处理同一个需求 单一职责
  • 各个微服务之间要相互独立,自治,自主开发、自主测试、自主部署、自主维护 面向服务
  • 保证数据的独立性、各个微服务独立管理业务模型下的数据 自治
  • 使用RESTful协议完成微服务之间的任务协助,数据交互采用JSON的格式,方便整和调用 隔离性强

微服务架构的核心组件

  • 服务治理

    • 服务注册
    • 服务发现

提供服务的叫服务提供者,调用服务的叫服务消费者。

  • 服务负载均衡(高并发)
  • 服务网关
  • 微服务的容错机制
  • 分布式配置
  • 服务监控

解决方案

最好的就是:

spring cloud 和 阿里巴巴的Dubbo

功能 Dubbo Spring Cloud SpringCloudAlibaba
注册中心 zookeer、Redis Eureka、Consul Nacos、Eureka
服务远程调用 Dubbo协议 Feign(http协议) Dubbo、Feign
配置中心 SpringCloudConfig SpringCloudConfig、Nacos
服务网关 SpringCloudGateway、Zuul SpringCloudGateway、Zuul
服务监控 dubbo-admin\功能弱 Hystrix Sentinel
  • springCloud+Feign---Restful
  • SpringCloud+Feign----Restful
  • SpringCloudAlibaba+Dubbo----Dubbo方式
  • Dubbo原始模式 (2012年) ----Dubbo

Spring Cloud

微服务时分布式软件架构的设计方式,具体的落地方案有衡多,Dubbo \Spring Boot/Srong Cloud\ Motan等等,spring cloud 基于spring boot 使得整体的开发、部署、配置都非常的简单、可以快速搭建基于微服务的分布式应用,springcloud相当于微服务的各个组件的集大成者

Spring boot 和Spring cloud的关系

Spring boot快速搭建基础的系统,Spring Cloud在此基础上实现了分布式微服务系统中的公共组件,入服务注册、服务发现、配置管理、熔断器、总线控制、服务调度方式是基于REST API。

  • 服务治理 Eureka
  • 服务通信 Ribbon
  • 服务通信 Feign
  • 服务容错 Hystrix
  • 服务配置 Config
  • 服务监控 Actuator
  • 服务跟踪 Zipkin

搭建微服务系统的核心中枢

服务治理的核心组件

  • 服务提供者
  • 服务消费者
  • 注册中心

分布式系统架构中,每个微服务再批董事,将自己的信息存储在注册中心,服务注册

服务消费者从注册中心查询的服务提供者的网络信息,并且通过词信息调用服务提供者的接口,服务发现。

注册中心管理各个微服务:通过心跳机制,每隔一段时间微服务回想注册中兴进行汇报,如果注册中心长时间无法与某个微服务通信,就自动销毁该服务

当某个服务的网络信息发声改变时,会重新注册。

服务者、服务消费者、注册中心的关联:

  • 启动注册中心
  • 服务提供者启动,在注册中心注册一个可以提供服务的实例
  • 服务消费者启动,在注册中心订阅需要调用的服务
  • 在注册中心将服务提供者的信息推送该服务调用者
  • 服务调用者调用相关信息(IP.端口)调用服务提供者的服务

注册中心的核心模块

  • 服务注册表
  • 服务注册
  • 服务发现
  • 服务检查

spring cloud的服务治理用Eureka组件

SpringCloud 小知识和历史的更多相关文章

  1. 蓝牙Bluetooth技术小知识

    蓝牙Bluetooth技术以及广泛的应用于各种设备,并将继续在物联网IoT领域担任重要角色.下面搜集整理了一些关于蓝牙技术的小知识,以备参考. 蓝牙Bluetooth技术始创于1994年,其名字来源于 ...

  2. HTML+CSS中的一些小知识

    今天分享一些HTML.CSS的小知识,希望能够对大家有所帮助! 1.解决网页乱码的问题:最重要的是要保证各个环节的字符编码一致! (1)编辑器的编辑环境的字符集(默认字符集):Crtl+U 常见的编码 ...

  3. iOS APP开发的小知识(分享)

          亿合科技小编发现从2007年第一款智能手机横空出世,由此开启了人们的移动智能时代.我们从一开始对APP的陌生,到现在的爱不释手,可见APP开发的出现对我们的生活改变有多巨大.而iOS AP ...

  4. Unix系统小知识(转)

    Unix操作系统的小知识 2.VI添加行号/翻页/清屏 .在对话模式时(即输完Esc再输入: ),输入“:set number”可以将编辑的文本加上行号.跟玩俄罗斯方块一样方便的上下左右移动箭头的快捷 ...

  5. salesforce 零基础开发入门学习(十)IDE便捷小知识

    在这里介绍两个IDE的便捷开发的小知识. 一) 本地调试 由于salesforce代码只能提交以后才能调试,所以很多时候调试代码很麻烦.新版增加了一个特性:即可以在本地调试相关的代码或者查看相关代码运 ...

  6. Jquery:小知识;

    Jquery:小知识: jQuery学习笔记(二):this相关问题及选择器   上一节的遗留问题,关于this的相关问题,先来解决一下. this的相关问题 this指代的是什么 这个应该是比较好理 ...

  7. HTML小知识---Label

    今天知道了一个html小知识: <input type="checkbox" id="chkVersion" />                 ...

  8. Unicode和汉字编码小知识

    Unicode和汉字编码小知识 将汉字进行UNICODE编码,如:“王”编码后就成了“\王”,UNICODE字符以\u开始,后面有4个数字或者字母,所有字符都是16进制的数字,每两位表示的256以内的 ...

  9. Java异常的一个小知识

    有以下两个代码: package com.lk.A; public class Test3 { public static void main(String[] args) { try { int a ...

  10. 12个你未必知道的CSS小知识

    虽然CSS并不是一种很复杂的技术,但就算你是一个使用CSS多年的高手,仍然会有很多CSS用法/属性/属性值你从来没使用过,甚至从来没听说过. 1.CSS的color属性并非只能用于文本显示 对于CSS ...

随机推荐

  1. python基础语法/简单数据类型/常量与变量

    今日内容概要 PEP-8规范/python基础语法 变量与常量定义 基本数据类型(整形int,字符串str,浮点型float,字典dict,列表list) 到此我们前期的配置已经可以满足我们正常编写代 ...

  2. 面试官:介绍一下 Redis 三种集群模式

    小码今天去面试. 面试官:给我介绍一下Redis集群, 小码:啊,平时开发用的都是单机Redis,没怎么用过集群了. 面试官:好的,出门右转不谢. 小码内心困惑:在小公司业务量也不大,单机的 Redi ...

  3. Android 内存缓存框架 LruCache 的实现原理,手写试试?

    本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 前言 大家好,我是小彭. 在之前的文章里,我们聊到了 LRU 缓存淘汰算法,并且分析 Java 标准库中支持 ...

  4. 【每日一题】【位于index后的双指针&排序数组】15. 三数之和/NC54 数组中相加和为0的三元组-211117/220206

    给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组. 注意:答案中不可以包含重复的三 ...

  5. 【每日一题】【集合增删】2022年1月13日-NC41 最长无重复子数组-220113/220122

    描述 给定一个长度为n的数组arr,返回arr的最长无重复元素子数组的长度,无重复指的是所有数字都不相同. 子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等,但是[1 ...

  6. [FCC] Cash Register 计算找零

    题目地址: https://chinese.freecodecamp.org/learn/javascript-algorithms-and-data-structures/javascript-al ...

  7. 【转载】EXCEL VBA-区域选择

    1- 区域命名 ThisWorkbook.Names.Item("foo").RefersTo =Tabelle1!$A$1:$B$1 ThisWorkbook.Names.Ite ...

  8. Transition 初步使用

    Transition Vue 提供了 transition 的封装组件,在下列情形中,可以给任何元素和组件添加进入/离开过渡: 条件渲染 (使用 v-if) 条件展示 (使用 v-show) 动态组件 ...

  9. 如何通过Java代码在PDF中插入、替换或删除图像?

    图文并茂的内容往往让人看起来更加舒服,如果只是文字内容的累加,往往会使读者产生视觉疲劳.搭配精美的文章配图则会使文章内容更加丰富,增加文章可读性的同时,也能提升用户体验.但由于PDF文档安全性较高,不 ...

  10. 梯度下降算法 Gradient Descent

    梯度下降算法 Gradient Descent 梯度下降算法是一种被广泛使用的优化算法.在读论文的时候碰到了一种参数优化问题: 在函数\(F\)中有若干参数是不确定的,已知\(n\)组训练数据,期望找 ...