自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(120)
  • 收藏
  • 关注

原创 Seata

单体应用被拆分成微服务应用,例如原来的三个模块被拆分成三个独立的应用,分别使用三个独立的数据源。业务操作需要调用这三个服务来完成,此时每个服务内部的数据一致性由本地事务来保证,但是全局的数据一致性问题没法保证。上面的配置只是服务端的配置,这个是客户端的配置必须配置。管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。定义全局事务的范围开始全局事务、提交或回滚全局事务。...

2022-07-22 15:57:07 2523

原创 6.Sentinel

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、流量路由、熔断降级、系统自适应过载保护、热点流量防护等多个维度保护服务的稳定性。Sentinel 具有以下特征:Sentinel分为两个部分:1.从以下地址下载jar包2.启动控制台,默认8080端口,账号密码默认sentinel1.pom引入依赖2.添加pom配置3.创建测试接口,并且访问后登陆监控平台查看。因为sentinel使用的是懒加载,所以必须访问一次才可以从监控平台看到基本介绍直

2022-07-11 15:09:51 503

原创 Git 配置多账号

有的话删除2.生成新的SSH keys直接回车3下,什么也不输入就是默认没有密码。.ssh的地址在C:\Users\Administrator.ssh生成GitLab生成Gitee3.完成后会在~/.ssh / 目录下生成以下文件id_rsa.gitlabid_rsa.gitlab.pubid_rsa.giteeid_rsa.gitlee.pub4.添加识别 SSH keys 新的私钥默认只读取 id_rsa,为了让 SSH 识别新的私钥,需要将新的私钥加入到 SSH agent

2022-07-05 17:22:54 2462

原创 5.Nacos

1

2022-07-01 17:58:58 2504

原创 4.Gateway

什么是GatewaySpringCloud Gateway 是 Spring Cloud的一个全新项目,基于Spring5.0+SpringBoot2.0和ProjectReactor等技术开发的网关,旨在为微服务架构提供一种简单有效的统一的API路由管理方式。SpringCloud Gateway作为Spring Cloud生态系统中的网关,目标是替代Zuul。为了提示网关性能,SpringCloud Gateway是基于WebFlux框架实现的,而WebFlux框架的底层是使用了高性能的Reacto

2022-03-27 19:21:38 1013

原创 3.Hystrix

Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时,异常等,Hystrix能保证在一个服务出问题的情况下不会导致整体服务失败,避免级联故障,提高分布式系统的弹性。服务降级(FallBack)Hystrix可以实现服务降级和熔断。“断路器”相当于一个开关,当某个服务发生故障后,会像调用方返回一个符合预期的、可处理的备选响应(FallBack),而不是长时间的等待或者抛出调用方法无法处理的异常,这样就保证了服务调用方的线程不会被长时间、不必要的

2022-03-21 21:09:24 429

原创 2.Ribbon和OpenFeign

RibbonSpring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具,主要功能是提供客户端的软件负载均衡算法和服务调用。如果使用的RestTemplate进行服务调用,那么创建RestTemplate的方法上面加@LoadBalanced注解就会开启Ribbon的负载均衡,Ribbon负载均衡有以下7中规则,默认轮询。修改负载均衡规则1.建立自定义配置类,自定义配置类不能放在@ComponentScan当前包和和子包下,否则会被所有Ribbon客户端所

2022-03-16 22:31:51 822

原创 1.Eureka

Eureka什么是服务治理Spring Cloud 封装了Netflix公司开发的Eureka模块来实现服务治理在传统的rpc远程调用框架中,管理每个服务与服务之间的依赖关系比较复杂,所以需要使用服务治理,管理服务和服务之间的依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册。Eureka包含两个组件:EurekaServer和EurekaClientEurekaServer:提供服务注册服务。各微服务节点通过配置启动后,会在EurekaServer中进行注册,然后服务注册表回存储所

2022-03-07 21:16:30 259

原创 Cloud的升级

服务注册中心:Nacos服务调用:Ribbon服务调用2:OpenFeign服务降级:Sentienl服务网关:Gateway服务配置:Nacos服务总线:Nacos

2022-02-24 22:05:17 155

原创 14.应⽤于服务化开发

服务开发环境在微服务开发中,每个人所开发的功能可能都不是完整的系统,很多功能需要与其他服务之间配合才能正常运转,⽽我们开发所使⽤的机器时常⽆法满⾜我们在⼀台机器上将这些相关服务同时运⾏起来。我们仅仅是开发某⼀部分服务的内容,既对其他服务的运转机制不太了解,又完全没有必要在⾃⼰的机器上运⾏其他的服务。所以我们最佳的实践⾃然就是让参与系统中服务开发的同事,各⾃维护⾃⼰开发服务的环境,⽽直接提供给我们对应的连接地址使⽤服务即可。更确切地说,我们在开发中,只需要在本地搭建起⾃⼰所开发服务的运⾏环境,再与其他开

2021-09-21 17:32:55 227

原创 13.常用的Docker Compose配置

version: "3"services: redis: image: redis:3.2 networks: - backend volumes: - ./redis/redis.conf:/etc/redis.conf:ro ports: - "6379:6379" command: ["redis-server", "/etc/redis.conf"] database: image: mysql:5.7 networks: - backend

2021-09-20 19:58:28 312

原创 12.使用Docker Compose管理容器

在Docker的设计中,一个容器只运行一个应用。但是目前的绝大多数应用系统都不是一个应用就可以组成的。虽然之前提到了容器间互相连接、交换数据的方法,使用这些方法也确实能搭建起一个完整应用系统的容器群。但是,需要执行很多命令,需要考虑很多应用和容器间的关系,而Docker Compose正是为了解决这些复杂的操作。解决容器管理问题就拿最简单的例⼦来说吧,如果我们要为我们的应⽤容器准备⼀个 MySQL 容器和⼀个 Redis 容器,那么在每次启动时,我们先要将 MySQL 容器和 Redis 容器启动起来,

2021-09-20 17:05:15 256

原创 11.常见的Dockerfile使用技巧

构建中使⽤变量在实际编写 Dockerfile 时,与搭建环境相关的指令会是其中占有⼤部分⽐例的指令。在搭建程序所需运⾏环境时,难免涉及到⼀些可变变量,例如依赖软件的版本,编译的参数等等。我们可以直接将这些数据写⼊到 Dockerfile 中是完全没有问题,有问题的是这些可变变量我们会经常调整,在调整时就需要我们到 Dockerfile 中找到它们并进⾏更改,如果只是简单的 Dockerfile ⽂件尚且好说,但如果是相对复杂或是存在多处变量的 Dockerfile ⽂件,这个⼯作就变得繁琐⽽让⼈烦躁了

2021-09-19 18:10:52 291

原创 10.通过Dockerfile生成镜像

关于DockerfileDockerfile 是 Docker 中⽤于定义镜像⾃动化构建流程的配置⽂件,在 Dockerfile 中,包含了构建镜像过程中需要执⾏的命令和其他操作。通过 Dockerfile 我们可以更加清晰、明确的给定 Docker 镜像的制作过程,⽽由于其仅是简单、⼩体积的⽂件,在⽹络等其他介质中传递的速度极快,能够更快的帮助我们实现容器迁移和集群部署。Dockerfile 的定义就是针对⼀个名为 Dockerfile 的⽂件,其虽然没有扩展名,但本质就是⼀个⽂本⽂件Dockerf

2021-09-19 17:31:48 368

原创 9.镜像和容器的迁移

将容器提交为镜像Docker 镜像的本质是多个基于 UnionFS 的镜像层依次挂载的结果,⽽容器的⽂件系统则是在以只读⽅式挂载镜像后增加的⼀个可读可写的沙盒环境。基于这样的结构,Docker 中为我们提供了将容器中的这个可读可写的沙盒环境持久化为⼀个镜像层的⽅法。更浅显的说,就是很轻松的在 Docker ⾥将容器内的修改记录下来,并且保存为⼀个新的镜像,命令为docker commit。Docker将容器生成为镜像的时候会先暂停容器,以保证容器内的文件系统处于一个稳定的状态,确保数据的一致性。 doc

2021-09-19 16:38:22 339

原创 8.管理和存储数据

数据管理实现方式Docker的文件系统有很多优势,也有很多弊端,最显著的是以下两点:1.容器内文件系统跟随容器的生命周期创建删除,数据无法持久化。2.由于容器的隔离,很难获得或操作容器内部文件的数据。此时就需要文件挂载,由于 UnionFS ⽀持挂载不同类型的⽂件系统到统⼀的⽬录结构中,所以只需要将宿主操作系统中,⽂件系统⾥的⽂件或⽬录挂载到容器中,便能够让容器内外共享这个⽂件。挂载方式基于底层存储实现,Docker 提供了三种适⽤于不同场景的⽂件系统挂载⽅式:Bind Mount、Volum

2021-09-16 21:02:37 176

原创 7.配置容器的网络

容器⽹络容器⽹络实质上也是由 Docker 为应⽤程序所创造的虚拟环境的⼀部分,它能让应⽤从宿主机操作系统的⽹络环境中独⽴出来,形成容器⾃有的⽹络设备、IP 协议栈、端口套接字、IP 路由表、防⽕墙等等与⽹络相关的模块。在Docker网络中,有三个核心概念:**沙盒 ( Sandbox ):**沙盒提供了容器的虚拟⽹络栈,也就是之前所提到的端口套接字、IP 路由表、防⽕墙等的内容。其实现隔离了容器⽹络与宿主机⽹络,形成了完全独⽴的容器⽹络环境。**⽹络 ( Network )????*可以理解为

2021-09-13 21:27:56 749

原创 6.运行和管理容器

创建和启动容器创建容器可以通过docker create命令来创建容器#创建容器docker create 镜像名称#创建容器并指定名称docker create --name 容器名称 镜像名称启动容器刚创建的容器状态为Created,其内部的应用还没启动,需要通过以下命令启动容器docker start 容器名还可以通过docker run命令将容器的创建和启动结合,通过--name指定容器名称,通过-d以守护进程方式启动docker run --name 容器名称 -d 镜

2021-09-12 18:05:45 142

原创 5.获取镜像

镜像仓库镜像仓库就好比是Git中的 GitLab、GitHub 等的托管平台,这不过整个仓库中托管的是镜像不是代码。镜像仓库除了存储镜像外最大的作用是分发,可以将开发环境的镜像推送至镜像仓库,并在测试或生产环境拉取到。获取镜像docker pull redis运行这个命令后,docker就会从仓库拉取镜像。如果不指定tag 那么就会默认使用latest这个标签。控制台中每一行代表一个镜像层,Docker会先拉取镜像所基于的所有镜像层,然后在分别拉取每一层,如果本地已经存在相同的镜像层(共享与其他

2021-09-12 16:41:44 420

原创 4.镜像和容器的

镜像镜像可以理解为一个包含应用程序和其相关依赖的一个基础文件系统,在Docker容器启动的过程中,以只读的方式被用于创建容器的运行环境。Docker镜像是由一组镜像层依次挂载而的来的,每个镜像层对应上一个镜像层的修改,这样修改其实是发生在容器运行过程中的,所以反过来理解的话,镜像是对容器运行环境进行持久化存储的结果对于每一个记录文件系统修改的镜像层来说,都有一个由Docker生成的Hash码,是一个64长度的字符串,全球唯一。通过唯一编码能够区分不同的镜像层并能保证它们的内容和编码是进行对应的,这带来

2021-09-12 16:06:19 211

原创 3.搭建Docker

Docker 的环境依赖由于Docker的容器隔离依赖于Linux内核中的相关支持,所以需要Linux内核3.10以上的版本,也就是下面的系统版本操作系统 ⽀持的系统版本CentOS CentOS 7DebianDebian Wheezy 7.7 (LTS)Debian Jessie 8 (LTS)Debian Stretch 9Debian Buster 10FedoraFedora 26Fedora 27UbuntuUbuntu Trusty 14.04 (LTS)Ubunt

2021-09-07 20:47:16 890

原创 2.Docker的技术实现和组成

之前提到了 Docker 实现容器引擎的⼀些技术,但那些都是⼀些相对底层的原理实现,在 Docker 将它们封装后,我们并不会直接操作它们。在 Docker 中,另外提供出了⼀些软件层⾯的概念,这才是我们操作 Docker 所针对的对象。镜像可以理解为一个只读的文件包,里面包含了虚拟环境运行最原始文件系统的内容。但是Docker的镜像和虚拟机的镜像是有区别的,Docker使用AUFS作为底层的文件系统实现,通过这种方式Docker实现是一种增量式的镜像结构。每次修改镜像,Docker都会将修改铸造成一

2021-09-05 20:33:35 167

原创 1.虚拟化和容器技术

Docker是⼀款以容器虚拟化技术为基础的软件,因此在了解有关 Docker 的概念知识和使⽤⽅法之前,虚拟化和容器技术是不可或缺的基础知识。虚拟化虚拟化技术就是将计算机物理资源进行抽象、转换为虚拟的计算机资源提供给程序使用。这里的计算机资源包括硬盘的存储资源、CPU的控制和运算资源、网卡的网络传输资源等等。在虚拟化的实现中,需要着重提的就是虚拟机。所谓虚拟机,通常来说就是通过⼀个虚拟机监视器 ( Virtual Machine Monitor ) 的设施来隔离操作系统与硬件或者应⽤程序和操作系统,以

2021-08-30 21:06:21 489

原创 8.内存与磁盘管理

查看硬件资源和信息w:查看当前有哪些用户top:查看当前资源使用情况du -h:显示当前文件夹大小df -h:显示文件系统的大小free:查看内存,加-m以mb单位显示,加-g以gb单位显示uname -a:显示系统信息fdisk:管理分区信息磁盘分区、物理设备和文件系统磁盘分区简单的说就是使用分区编辑器在磁盘上划分几个逻辑不分,分区是一个虚拟概念。文件系统在每个分区中,文件都是按照一定方法被存储和组织起来的,这种方法被称为"文件系统"。用于使用文件系统保存数据时,不关心文件实际保存

2021-07-18 18:19:41 540 1

原创 7.Linux开发神器

Java Web应用配置Java 环境第一种安装JDKyum install -y java-1.8.0-openjdk检查是否安装成功java -version第二种下载安装包https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html解压tar -zxvf 安装包配置环境变量vim /etc/profileexport JAVA_HOME=JDK 安装包export

2021-07-10 21:46:59 101

原创 6.管理服务器和服务

SystemdSystemd是一个系统管理守护进程、工具和库的集合,用于取代System V初始进程。Systemd的功能是用于集中管理和配置类Linux 系统。Systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器。启动服务:systemctl start 服务停止服务:systemctl stop 服务重启服务:systemctl restart 服务查看启动的服务:systemctl list-unit-files --type=service...

2021-06-06 18:30:54 153

原创 5.网络和安全

安全的文件传输wget:从HTTP或者FTP下载文件。scp:Secure Copy的缩写,表示"安全拷贝"。可以使我们通过网络把文件从一台电脑拷贝到另一台电脑。是基于SSH来运作的。本机拷贝到别的电脑:scp 本机文件名 服务器用户名@服务器地址:/拷贝到服务器的地址例如scp name.txt root@192.168.1.5:/root。从远程电脑拷贝到本机:scp 服务器用户名@服务器地址:/文件地址/文件名 拷贝到本机的文件名例如scp root@192.168.1.5:/root/name.

2021-05-16 21:26:53 238 2

原创 4.文本编辑器

文本编辑器Vimvim多种模式和操作:交互模式(默认模式):不能输入文本插入模式:可以输入文本,字母键盘i、I、a、A、o、O进入插入不同字母进入插入模式后光标所在位置不同,退出模式 ESC命令模式:“:”号键,然后输入命令就可以执行命令,执行命令后又会回到交互模式可视模式(不常用)Vim操作:w :保存文件:q :退出文件:q! :强制退出,不保存修改:wq:保存并退出:g :行号+G或者行号+gg,命令模式下set nu显示行,set nonu不显示行号/ :从当前

2021-04-11 20:43:38 93

原创 3.远程连接和SSH

首先配置虚拟机网络,然后通过ip addr命令可以获取到IP地址。ssh协议:SSH表示Secure SHell的缩写。表示安全的Shell。shell是英语“壳”的意思。通过SSH协议,两台机器之间传递的信息会被加密,这样就保证了传输信息的安全性。对称加密和非对称加密SSH协议对称加密:对称加密用一个密钥来加密和解密。缺陷是必须谨慎的传递密钥非对称加密:用一个密钥加密用另外一个密钥解密。一个是公钥,用于加密;一个是私钥用于解密。最有名的属于RSA算法。SSH结合使用非对称加密和对称加密构建安全

2021-03-28 20:16:16 115

原创 2.Linux进阶知识和命令

筛选数据grep命令: 筛选数据,全局搜索一个正则表达式,并打印。简单说就是在文件中搜索关键字并显示关键字所在的行。使用方法 grep 关键字 供搜索的文件。-i忽略大小写grep -i path /etc/profile;-n显示行号;-v相当于反向搜索,只显示没有关键字的行;-r递归搜索 在所有子目录和子文件查找;-E使用正则表达式 例如 grep -E ^page /etc/profile。流 管道 重定向重定向:把本来要显示在终端的命令结果,输送到别的地方管 道:把两个命令连起来使用

2021-03-07 21:27:51 227

原创 1.Linux基础知识和命令

基本命令认识1. 命令行提示符@前面的是登陆用户,后面的是当前计算机所在域名,~表示当前目录$代表普通拥有,有权限的限制,不能更改系统文件#代表超级用户2.时间命令:date星期 月 日 时分秒 时区(中央标准时间) 年3. 列出当前目录下的文件和目录,list的缩写:ls4.命令和参数,命令和参数之间用空格隔开,参数没有固定的格式,但是还是遵循一定的规范短参数(一个字母):command -p。command -a -b -C -d 等价与 command -abCd。大小写是有不

2021-02-13 21:09:56 176

原创 MVCC

MVCC(Mutil-Version Concurrency Control),就是多版本并发控制。MVCC 是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问。在Mysql的InnoDB引擎中就是指在已提交读(READ COMMITTD)和可重复读(REPEATABLE READ)这两种隔离级别下的事务对于SELECT操作会访问版本链中的记录的过程。这就使得别的事务可以修改这条记录,反正每次修改都会在版本链中记录。SELECT可以去版本链中拿记录,这就实现了读-写,写-读的并发执行,

2020-06-29 17:51:28 135

原创 JUC-8.0-Future和Callable

Runnable的缺陷不能返回一个返回值不能抛出 checked ExceptionCallable接口类似于Runnable,被其他线程执行的任务实现Call方法有返回值Future可以用Future.get来获取Callable接口返回的执行结果。相当于一个存储器,它存储了call()这个任务的结果,而这个任务的执行时间是无法提前确定的。在call()未执行完之前调用get()...

2020-05-07 22:13:12 157

原创 JUC-7.1-线程协作-Semaphore

述Semaphore 信号量,也是一个线程协作的工具,可以用来限制或管理数量有限的资源的使用用法信号量的作用是维护一个 “许可证” 的计数,线程可以获取许可证,然后信号量剩余许可证数量减一,当信号量所拥有的许可证为0的时候,下一个想要获取许可证的线程就需要等待,直到有另外的线程释放了许可证常用的几个方法如下构造函数: 和上文的 CountDownLatch 一样, Semaphore...

2020-04-22 22:23:20 171

原创 JUC-7.2-线程协作-Condition

述在线程运行过程中,需要等待某个条件的时候,就可以用 Condition ,调用它的 await() 方法,进入阻塞状态等待,当另一个线程去执行对应的条件,直到这个条件达成的时候就去执行它的 signal() 方法,这时候JVM会从被阻塞的线程中找等待该条件的线程,然后唤醒,继续执行常用方法await(): 调用后进入阻塞状态signalAll(): 唤起全部的正在等待的线程signa...

2020-04-19 15:14:07 177

原创 JUC-7.3-线程协作-CyclicBarrier

述CyclicBarrier 循环栅栏同样是一个线程协作工具,和 CountDownLatch 很像,都能阻塞一组线程作用当有大量线程相互配合,分别计算不同任务,并且需要最后统一汇总的时候,我们可以使用 CyclicBarrier,CyclicBarrier 可以构造一个集结点,当某一个线程执行完毕,它就会到集结点等待,直到所有线程都到了集结点,那么该栅栏就被撤销,所有线程再统一出发,继续执...

2020-04-19 15:14:00 213

原创 JUC-6.0-并发容器-HashMap

述并发编程中,并发容器也是非常重要的一个工具,我们平时用的 ArrayList, HashMap 等等这些集合类都不是线程安全的,在并发环境下就可能会出现问题,JDK给我们提供了一些线程安全的容器,供我们使用过时的并发容器在早期的版本中, Hashtable 和 Vector 就对应的是线程安全的 HashMap 和 ArrayList这两个线程安全类,本质上就是给方法加上 synchro......

2020-04-19 15:13:51 205

原创 JUC-7.0-线程协作-CountDownLatch

述线程的运行和运行时机是不受我们自己控制的,一些情况下我们可能需要多个线程之间配合来完成一些任务,比如线程A等B线程执行完成之后运行等CountDownLatchCountDownLatch 是一个线程协作的工具类,是一个计数器,主要用到的有以下几个方法:构造方法,参数是 count ,是需要倒数的值await(): 调用 await() 方法的线程会被挂起,等到 count 为 0 ...

2020-04-18 17:59:07 344

原创 JUC-6.3-并发容器-队列

述除了集合,还有一种数据结构就是队列,前面在学习线程池的时候已经接触过了,用队列可以在线程之间传递数据,最常见的就是生产者和消费者模式,队列又分为阻塞队列和非阻塞队列阻塞队列和非阻塞队列队列是一个逻辑结构,对应的物理结构可能是由数组或链表实现的那么阻塞队列和非阻塞队列有什么区别举个例子,现在有一个队列,长度是10,现在已经满了,当第11个数据放进去的时候,阻塞队列可以设置一个超时时间,...

2020-04-18 17:58:34 207

原创 JUC-6.2-并发容器-CopyOnWriteArrayList

述了解了并发安全的 HashMap 之后,再来看看并发安全的 ArrayList ,就是 CopyOnWriteArrayList, 早期的版本中有 Vector 和 SynchronizedList 但是这两个锁的粒度太大,所以并发效率并不高, Copy-On-Write 并发容器还包括 CopyOnWriteArraySet 用来替代同步 Set适用场景CopyOnWriteArrayL...

2020-04-18 17:57:16 192

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除