64eba160ec60461ab0990fcea773625cea4445fda1ea3542b08f33404252d0e1c0b6bf83079d21e541be002cbacf68cf8fe0a69323d5f6f97a464a7e9030e1ee6e2035dd936ba297c494dff5ccd3132b5fff66b97d62261f9405fb81a2e3a0823a755b02535bd8e56374d8d7354662bc2eb5a42b9a237d269f59f39170e90e5c3c4eadd625d18e0d6502e0ed4852663d74ec66337611f59aa4040d2f063f216501c93c558ba5607496b23cebd2c4c73b59a922bc93368b4fb920bd4e43cd6eafa1ce87a201a67ea0773b215c738bc21f3c80632624dd1e63b78d9e7d5f24442ba21255b1c845b0005303cc1cb5d402923240d2e0ab708bdc0 ...
RedisSQL和NoSQL的区别
认识Redis
是一个基于内存的键值型NoSQl数据库
value支持多种不同数据结构,功能丰富
单线程,每个命令具备原子性
低延迟,速度快(基于内存、IO多路复用、良好的编码)
支持数据持久化
支持主从集群、分片集群
支持多语言客户端
Redis数据结构
Redis命令
官网https://redis.io/commands/
Redis通用命令
通过help[commend] 来查看帮助文档
通用指令是部分数据类型的,都可以使用的指令,常见的有:
keys:查看符合模板的所有key,不建议在生产环境设备上使用
del : 删除一个指定的key
exists:判断一个key是否存在
expire:给一个key设置有效期,有效期到期时该key会被自动删除
TTL: 查看一个key的剩余时间 -1 为无限
String类型命令
也就是字符串类型,是Redis中最简单的存储类型。其value是字符串,不过根据字符串的格式不同,又可以分为3类
string:普通字符串
int :整形类型,可以做自增、自减操作
float:浮点类型,可 ...
RabbitMQ同步调用的优势
时效性,等待到结果返回后
同步调用的问题
扩展性差
性能下降
级联失败问题
异步调用
就是基于消息通知的方式 一般包含三个角色
消息发送着:投递消息的人,就是原来的调用方
消息代理:管理,缓存、转发消息,你可以把它理解成微信服务器
消息接收者:接受和处理消息的人,就是原来的服务提供方
异步调用的优势
解除耦合,扩展性强
无需等待,性能好
故障隔离
缓存消息,流量削峰填谷
异步调用的问题是什么
不能立即得到调用结果,时效性差
不确定下游业务执行是否成功
业务安全依赖于broker的可靠性
在docker中安装镜像
执行
docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq
访问15672端口 账号密码:guest
认识RabbitMQ
交换机是用来路由转发消息,不能保存消息
快速使用需求
新建队列hello.queque1和hello.queue2
向默认的amp.fanout交换机发送一条消息
查看消息是否到hell ...
loadbalancer是如何实现挂载的
我们可以通过源码追踪看他底层是如何实现的在pom文件中发现我们导入的依赖是
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-loadbalancer</artifactId> </dependency>
去依赖里看他导进来的依赖,可以看到这里只有一个pom文件 点开pom文件发现里面导入了一个 spring-cloud-loadbalancer 的依赖
再去他的里面找源码
我们可以发现在spring.factories中找到他的配置类
通过翻译不难发现LoadBalancerAutoConfiguration是 负载均衡自动配置 按住ctrl+鼠标左键可以追踪
//// Source code recreated from a .class file by IntelliJ IDEA// (po ...
概述 文章转自 https://leehao.me/在分布式系统中,负载均衡(Load Balancing)是一种将任务分派到多个服务端进程的方法。例如,将一个HTTP请求派发到实际的Web服务器中执行的过程就涉及负载均衡的实现。一个HTTP请求到达Web服务器,这中间涉及多个过程,也存在多种不同负载均衡的方法。本文讲述负载均衡的基本原理与派发策略,下图是负载均衡的基本原理图,图中客户端的请求请求经过达负载均衡器(Load Balancer)的分派,被指定的服务器进程进行处理。
实现负载均衡主要有两个目的。第一个目的是将任务的处理负载均摊到不同的进程,以减少单一进程的负载,以达到处理能力水平扩容的目的。第二个目的则是提高容错能力。我们知道,在线上正式环境中,机器宕机或者进程异常导致服务不可用是常有的现象。在实现负载均衡的系统中,多个服务器进程提供同样的服务,一个进程不可用的情况下,任务会被负载均衡器派发到其他可用的进程,以达到高可用的目的。在多台不同的服务器中部署相同的服务进程,通过负载均衡对外提供服务,这组进程也称为“集群”(cluster)。
负载均衡实现策略常见的负载均衡实现策 ...
springCloud单体应用单体应用的特点
单体应用就是传统意义的,单个应用程序的应用
单体软件一般采用,分包的方式,来实现代码的解耦和管理
单体应用一般分为MVC三层架构,也可以分成表现层,业务层,持久层。本身起到一定的代码分割管理、方便维护
单体应用的特点是整个应用其实是一个web项目,是一个工程,运行在JVM(java虚拟机)
在单体应用中,springMvc(或者servlet)充当控制层 ,mabatis(或者JDBC) 充当持久层,Spring则充当整合表现层、业务层、持久层的作用
单体应用的缺陷
当项目越来越大,代码量越来越多,造成编译、打包费时,越来越影响效率。
当业务越来越多,不同的业务会重建新的项目,不同的项目的功能模块可能会出现重复建设的情况,造成浪费。
可伸缩性差. 单体应用中的功能模块的使用场景,并发量,消耗的资源类型各有不同(例如一个电商项目中,商品模块消耗的支援大,其他模块相对较少),对于资源的利用又互相影响,单体应用无法做到按照模块需求分配资源
系统错误隔离性差,可用性差.任何一个模块的错误均可能造成整个系统的宕机.
架构演变SOA
定义
SOA ...
docker什么是dockerDocker是一个开源的应用容器引擎;是一个轻量级容器技术; Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像 运行中的这个镜像称为容器,容器启动是非常快速的
docker的核心概念
docker主机(Host):安装了docker程序的机器(docker可以直接安装在操作系统上)
docker客户端(Client):连接docker主机进行操作
docker仓库(Registry):用来保存各种打包好的软件镜像
docker镜像(Images):软件打包好的镜像;放在docker仓库中
docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用
原理图
使用docker的步骤
安装dockersWindows窗口
在 Docker Hub 查询对应的组件, 从Docker仓库拉取这个软件/组件对应的镜像
使用Docker运行这个镜像,这个镜像就会生成一个Docker容器container (配置项,如tomcat镜 ...