9.SpringtCloud-Hystrix断路器
分布式系统面临的问题:复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某个时候将不可避免的失败。
服务雪崩:
多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其他的微服务,这就是所谓的 “ 扇出 ” 。如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A 的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的 “ 雪崩效应 ”。
对于高流量的应用来说,单一的后端依赖可能会导致所有服务器上的所有资源都在几秒钟内饱和。比失败更糟糕的是,这些应用程序还可能导致服务之间的延迟增加,备份队列,线程和其他系统资源紧张,导致整个系统发生更多的级联故障。这些都表示需要对故障和延迟进行隔离和管理,以便单个依赖关系的失败,不能取消整个应用程序或系统。
& ...
4.SpringCloud-Zookeeper代替Eureka
dependencyManagementMaven使用dependencyManagement元素来提供了一种管理依赖版本号的方式。
通常会在一个组织或者项目的最顶层的父pom中看到dependencyManagement元素
使用pom.xml中的dependencyManagement元素能让所有在子项目中引用一个依赖而不用显式的列出版本号。
Maven会沿着父子层次向上走,知道找到一个拥有dependencyManagement元素的项目,然后它就会使用这个dependencyManagement元素中指定的版本号例如在父项目里:
12345678910<dependencyManagement> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.2< ...
2.SpringCloud-前置准备
前言:Eureka停止更新了你怎么办?
Zookeeper
Consul
Nacos
使用SpringCloud整合Zookeeper代替Eureka
注册中心 zookeeper:
zookeeper是一个分布式协调工具,可以实现注册中心功能
关闭Linux服务器防火墙后启动zookeeper服务器
zookeeper服务器取代Eureka服务器,zk作为服务注册中心
1、支付服务注册进zookeeper1.1 创建module cloud-provider-payment80041.2 引入zookeeper依赖,代替eureka12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" x ...
5.SpringCloud-Consul服务注册与发现
Consul官网:https://www.consul.io/intro/index.html
Consul简介:Consul是一套开源的分布式服务发现和配置管理系统,由HashiCorp公司用Go语言开发。
提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网络,总之Consul提供了一种完整的服务网格解决方案。
它具有很多优点。包括:基于 raft 协议,比较简洁;支持健康检查,同时支持 HTTP 和 DNS 协议 支持跨数据中心的 WAN 集群 提供图形界面 跨平台,支持Linux、Mac、Windows
Consul功能:
服务发现:提供 HTTP 和 DNS 两种发现方式
健康监测:支持多种方式,HTTP、TCP、Docker、Shell脚本定制化
KV存储:Key、Value的存储方式
多数据中心:Consul支持多数据中心
可视化界面Consul下载:进入官网:https://www.consul.io/intro/index.html点击 Download,往下拉,选择 Windows 64 ...
6.注册中心Eureka、Zookeeper、Consul的异同点
组件名
语言
CAP
服务监控检查
对外暴露接口
Springcloud集成
Eureka
Java
AP
可配支持
HTTP
已集成
Consul
Go
CP
支持
HTTP/DNS
已集成
Zookeeper
Java
CP
支持
客户端
已集成
C:Consistency (强一致性)A:Available (可用性)P:Partition tolerance (分区容错性)
最多只能同时较好的满足两个
CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求。因此,根据CAP原理将NoSQL数据库分成了满足CA原则、满足CP原则和满足AP原则三大类。
CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强CP - 满足一致性,分区容错性的系统,通常性能不是特别高AP - 满足可用性,分区容错性的系统,通常可能对一致性要求低一些
Eureka 采用的是AP架构,只满足可用性和分区容错性当网络分区出现后,为了保证可用性,系统B可以返回旧值,保证系统的可用性。
Eureka有自我保护机制,更强调的是A ...
2.SpringCloud-前置准备
Eureka简介 Spring Cloud Netflix Eureka是Spring Cloud Netflix子项目的核心组件之一,主要用于微服务架构中的服务治理。 本文将对搭建Eureka注册中心,搭建Eureka客户端,搭建Eureka集群及给Eureka注册中心添加登录认证等进行介绍。
在微服务架构中往往会有一个注册中心,每个微服务都会向注册中心去注册自己的地址及端口信息,注册中心维护着服务名称与服务实例的对应关系。每个微服务都会定时从注册中心获取服务列表,同时汇报自己的运行情况,这样当有的服务需要调用其他服务时,就可以从自己获取到的服务列表中获取实例地址进行调用,Eureka实现了这套服务注册与发现机制。
什么是服务治理?Springcloud 封装了Netflix 公司开发的Eureka模块来实现服务治理。在传统的rpc 远程调用框架中 ...
SpringCloud入门
SpringCloud入门简介1. 十分钟了解SpringCloud1.1 为什么需要学习Spring Cloud不论是商业应用还是用户应用,在业务初期都很简单,我们通常会把它实现为单体结构的应用。但是,随着业务逐渐发展,产品思想会变得越来越复杂,单体结构的应用也会越来越复杂。这就会给应用带来如下的几个问题:
代码结构混乱:业务复杂,导致代码量很大,管理会越来越困难。同时,这也会给业务的快速迭代带来巨大挑战;
开发效率变低:开发人员同时开发一套代码,很难避免代码冲突。开发过程会伴随着不断解决冲突的过程,这会严重的影响开发效率;
排查解决问题成本高:线上业务发现 bug,修复 bug 的过程可能很简单。但是,由于只有一套代码,需要重新编译、打包、上线,成本很高。由于单体结构的应用随着系统复杂度的增高,会暴露出各种各样的问题。近些年来,微服务架构逐渐取代了单体架构,且这种趋势将会越来越流行。Spring Cloud是目前最常用的微服务开发框架,已经在企业级开发中大量的应用。
1.2 什么是Spring Cloud Spring Cloud是一系列框架的有序集合。它利用S ...
Mysql架构与索引优化分析
1. MySQL 锁机制1.1 概述定义
123456锁是计算机协调多个进程或线程并发访问某个资源的机制。在数据库系统中, 除了传统的计算机资源(如:CPU, RAM。I/O等)的争用外, 数据也是一种供多用户共享的资源。如何保证数据并发的访问和一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤重要,也更加复杂。
生活购物案例
](https://zhangxin-blog.oss-cn-beijing.aliyuncs.com/blog/mysql/zzyy/mq69.jpg)
锁的分类
对数据操作的类型分(读/写)
读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会相互影响
写锁(排他锁):当前写操作没有完成之前,它会阻隔其他写锁和读锁
对数据操作的粒度来分
表锁
行锁
1.2 三锁1.2.1 表锁(偏写)特点:偏向 MyISAM 存储引擎,开销小,加锁块;无死锁;锁定粒度大,发生锁冲突的概率高,并发度最低。
案例分析建表SQL
123456789101112131 ...
synchronized原理(C++源码)
1. javap 反汇编1.1 目标通过javap反汇编学习synchronized的原理
我们编写一个简单的synchronized代码,如下:
12345678910111213141516package com.zzxx.demo04_synchronized_monitor;public class Demo01 { private static Object obj = new Object(); public static void main(String[] args) { synchronized (obj) { System.out.println("1"); } } public synchronized void test() { System.out.println("a"); }}
我们要看synchronized的原理,但是synchron ...
Mysql架构与索引优化分析
1. Mysql逻辑架构介绍和其它数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。这种架构可以根据业务的需求和实际需要选择合适的存储引擎。
1.1 Mysql简介MSQL概述MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。
MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
Mysql是开源的,所以你不需要支付额外的费用。
Mysql是可以定制的,采用了GPL协议,你可以修改源码来开发自己的Mysql系统。
Mysql支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
MySQL使用标准的SQL数据语言形式。
Mysql可以允许于多个系统上,并且支持多种语言。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
MySQL支持大型数据库,支持5000万条记录的数据仓库,32 ...




