SpringCloud
学习SpringCloud的学习记录
Tellme3
任务艰巨在于漫长。
展开
-
4、Eureka注册中心(注册中心的作用,和使用流程)
Eureka注册中心(注册中心的作用,和使用流程) 问题:我们之前采用硬编码的方式那么其他微服务存在就没有意义了,所以后面引出了Eureka注册中心 第一步:注册中心(注册服务信息)(为什么这里还记录了8080这个服务消费者信息呢?因为后面他可能也会被别人调用成为服务提供者)第二步:8080去拉取注册中心的服务信息第三步:负载均衡(在提供者中挑取一个端口(也就是服务提供者)) 如何做到负载均衡前的接口都是好的(总不能选坏的吧)(即选取的是还能使用的接口(如何选取?是提供者会每30秒就向注册中心发送信息表原创 2022-09-20 11:14:44 · 212 阅读 · 0 评论 -
Eureka注册中心(提供者和消费者)
服务消费者:一次业务中,调用其他微服务的服务(调用其他微服务提供的接口)*服务提供者:一次业务中,被其他微服务调用的服务(提供接口给其他微服务)原创 2022-09-20 11:12:52 · 83 阅读 · 0 评论 -
71、Es(es和mysql的概念对比)
5、架构(分别利用mysql和es的有点(读写分离?映射(不同结构的文档是一类(索引的约束条件))1、文档(数据)是json类型的。索引(相同类型的文档的集合)理解:!!!我们操作es的步骤:先创建索引,再约定好我们文档的结构是什么样的(是4个字段还是3个字段啊这种),然后才是文档的crudDsl:用的json风格来实现crud(是基于http请求发出去的(因为es对外暴露的restFul的接口))好处就是dsl和我们的编程语言无关,只要你能发http请求。就能将dsl发给我们。5、架构(分别利原创 2022-11-03 10:34:08 · 869 阅读 · 0 评论 -
70、ES(倒排索引)
查找是先找到文档,再看文档是否符合我们的要求(文档找词条)查找的时候我们是先找到词条,再根据词条找文档(词条找文档)查找是先找到文档,再看文档是否符合我们的要求(文档找词条)*2、倒排索引的逻辑是:他是根据词条去创建索引,然后关联到文档。我们根据词条拿到我们要查找的文档id,我们再根据文档id得到文档(可能会有很多,他不是一个很精确的)直接存到结果集(想象一下我们再csdn里面查询一个bug会出来很多拥有关键词的内容)查找的时候我们是先找到词条,再根据词条找文档(词条找文档)总结:正向索引:原创 2022-11-03 10:31:58 · 403 阅读 · 0 评论 -
69、Elasticsearch(简称ES(分布式的搜索引擎))
Elasticsearch(简称ES(分布式的搜索引擎)) !!!使用场景(不仅仅可以搜索到我们要的东西,还可以将里面的相关的关键字也展示出来(高量显示)):*Github/商城搜索/百度搜索/地图打车(显示最近的车)*日志数据分析/事实监控(ELK的核心(ES的核心又是lucene(倒排索引))) 总结:原创 2022-11-03 10:29:57 · 609 阅读 · 0 评论 -
68、SpringAQMP(消息转化器)
1、父工程引入依赖(发送的时候是把对象序列化成字节)解决方式(消息转换器(我们使用json序列化))发送的时候是把对象转换为字节,接收的时候把字节反序列化为对象原创 2022-11-03 10:28:22 · 222 阅读 · 0 评论 -
67、SpringAQMP(Topic exchange(交换机))
SpringAQMP(Topic exchange(交换机))这里可以用.来分隔key从而表示不同的key(以前key只是一个单词)支持通配符(精髓匹配,例如:我们想要关注多个国家的新闻就不需要绑定多个key了,只要#.news了) 案例: 第一步:绑定key(而且是以通配符的形式) 第二步:(发送消息) 总结:原创 2022-11-03 10:23:08 · 65 阅读 · 0 评论 -
66、SpringAQMP(Direct exchange(交换机))
SpringAQMP(Direct exchange(交换机))交换机根据规则(设置的key)发送(又叫做路由)给绑定的队列(路由模式) 案例:(!!!记住crtl+p这个快捷键:可以让你知道你后面写什么) 第一步:在消息监听里面(重新生成监听方法(队列,交换机,key,和绑定关系)) 运行后: 第二步:消息发送 总结:原创 2022-11-03 10:19:56 · 64 阅读 · 0 评论 -
65、SpringAQMP(fanout exchange(交换机))
SpringAQMP(fanout exchange(交换机))这里就不是只发给一个,而是发给多个(这里是有多个队列了,前面就只有一个队列) 案例: 第一步:创建一个配置类(声明队列,交换机,并将其绑定) 第二步:消费者接收 第三步:提供者产生消息(这里我们是发个交换机了,不再是队列了(有所改变)) 测试:(一次发送多个接收) 总结:原创 2022-11-03 10:16:20 · 93 阅读 · 0 评论 -
64、SpringAMQP(发布订阅模型)
SpringAMQP(发布订阅模型)原创 2022-11-03 10:13:59 · 71 阅读 · 0 评论 -
63、SpringAMQP(work queue 模型)
解决思路:preFetch(我们想要的效果是效率低的就拿少点,效率高点就拿多点)第一步:推送者发50条消息(不要一下子发完,一秒钟内发完)第三步:测试(先启动消费者,再启动推送者)第二步:消费者接收消息。原创 2022-11-03 10:11:44 · 89 阅读 · 0 评论 -
63、SpringAMQP(work queue 模型)
解决思路:preFetch(我们想要的效果是效率低的就拿少点,效率高点就拿多点)第一步:推送者发50条消息(不要一下子发完,一秒钟内发完)第三步:测试(先启动消费者,再启动推送者)第二步:消费者接收消息。原创 2022-11-03 10:03:29 · 77 阅读 · 0 评论 -
62、SpringAMQP(入门接收消息(只是我们操作方法不一样。(监听)))
SpringAMQP(入门接收消息(只是我们操作方法不一样。(监听)))第一步:也是引依赖第二步:配置yml也是mq的连接信息第三步:(监听@RabbitListener(queues))他监听到这个队列有消息就交给你处理 我们直接跑整个服务就OK了 也是消费完就删除了 步骤: 总结:原创 2022-11-02 08:29:53 · 155 阅读 · 0 评论 -
61、SpringAMQP(入门消息发送(RabbitTemplate))
SpringAMQP(入门消息发送(RabbitTemplate)) 第一步:引入依赖 第二步:配置yml的mq连接信息 第三步:(我们写个单元测试。Junit5是不需要@RunWith的)我们往XX队列,发送XXX消息。 测试:有一条了: 总结:原创 2022-11-02 08:28:13 · 429 阅读 · 0 评论 -
59、RabbitMQ(消息模型)
RabbitMQ(消息模型)五种:上面两个是只有队列没有交换机(或者没有broker) Helloword案例(最基础的消息队列)原创 2022-11-02 08:25:01 · 108 阅读 · 0 评论 -
58、RbbitMQ(结构和概念以及mq界面:15672)
*Pulisher:消息的发送者*exchange:交换机(路由到队列)*queue:队列(暂存消息)*consumer:消费者(从队列中获取消息)*VirtualHost:虚拟主机(各个虚拟主机是相互隔离的)认识MQ界面第一个:Overview:总览(就是一些mq节点的一些信息)原创 2022-11-02 08:23:48 · 158 阅读 · 0 评论 -
57、MQ(认识MQ:也就是broker)
MQ(认识MQ:也就是broker)MQ(messageQueue)消息队列:也就是我们事件驱动架构的broker(用来存储事件在这里我们称事件为消息。)比如:有一人支付成功了这是一个事件在消息队列里叫消息。消息队列来管理这些消息。后面消费者来订阅这些消息,消息队列就将这些消息发送给他们原创 2022-11-02 08:18:33 · 1691 阅读 · 0 评论 -
56、MQ(异步通讯的的缺点/优点)
MQ(异步通讯的的缺点/优点)方案:事件驱动模式这里支付服务发布支付成功事件后就停止了自己的业务,返回给用户显示支付成功。不需要去等待订单服务等等服务(这些服务什么时候做,谁去做不去支付服务不去管) 优点1:服务解耦(相当于所有服务挂载到了broker上了。不再是一个一个去主动调用了)任意删除,增加业务我们都不再需要更改代码(只是加了一个订阅事件) 优点2:性能提升,吞吐量提高(这些都是相对于同步来说)总耗时:50ms+10ms=60ms(他就是支付成功了啊) 优点3:服务没有强依赖,不担心级联失败问题(若原创 2022-11-02 08:16:59 · 526 阅读 · 0 评论 -
55、MQ(同步通讯的的缺点/优点)
MQ(同步通讯的的缺点/优点) 同步通讯/异步通讯*同步通讯只能一对一,实时 同步调用的问题: 优点:时效性高,可以马上得出结果总结:原创 2022-11-02 08:15:22 · 423 阅读 · 0 评论 -
54、Docker镜像仓库(私有仓库拉取镜像)
Docker镜像仓库(私有仓库拉取镜像) 先查看下镜像 第一步:打包镜像为这种形式 再查看下 第二步:(推送镜像) 测试: 第三步:我们将前面的两个nginx都删除掉再来从镜像仓库中拉取删除nginx: 查看 拉取 查看 总结:原创 2022-11-02 08:13:41 · 559 阅读 · 0 评论 -
54、Docker镜像仓库(私有仓库拉取镜像)
Docker镜像仓库(私有仓库拉取镜像) 先查看下镜像 第一步:打包镜像为这种形式 再查看下 第二步:(推送镜像) 测试: 第三步:我们将前面的两个nginx都删除掉再来从镜像仓库中拉取删除nginx: 查看 拉取 查看 总结:原创 2022-11-02 08:06:16 · 330 阅读 · 0 评论 -
53、Docker镜像仓库(搭建私有的镜像仓库(浏览器可以访问))
搭建图形界面仓库。Docker镜像仓库(搭建私有的镜像仓库(浏览器可以访问))第三步:更改docker-compose.yml内容(就是上面搭建图形仓库的代码)原创 2022-10-30 00:21:48 · 297 阅读 · 0 评论 -
52、DockerCompose(部署微服务集群(案例))
DockerCompose(部署微服务集群(案例))案例: 第一步:查看这些文件里的配置文件 第二步:修改自己的idea上的cloud-demo项目,将数据库/nacos地址都命名为docker-composer的服务名(即上面nacos,mysql,userservice。。)Userservice Orderservice Getway 第三步:打包名app.jar(finalName就是名字) 再分别复制到其他服务去在package打包 第四步:将打包好app.jar复制到对应的资料的cloud-d原创 2022-10-30 00:18:47 · 671 阅读 · 4 评论 -
51、DockerCompose(部署微服务集群)
DockerCompose(部署微服务集群) Dockercompose认识: 详细: 总结:原创 2022-10-30 00:15:38 · 69 阅读 · 0 评论 -
50、Dockerfile自定义镜像(构建镜像)
Dockerfile自定义镜像(构建镜像) 案例: Dockerfile文件 第一步:创建文件 第二步:进入创建的目录,并且上传三个文件 第三步:利用dockerfile去构建镜像(注意这个.) 查看镜像 第四步:启动 查看容器运行及其状态 测试访问: 案例二:(前面的分层就不需要做了) 第一步:修改dockerfile(根据java 8-alpine) 后面与上面相同原创 2022-10-30 00:14:25 · 96 阅读 · 0 评论 -
49、Dockerfile自定义镜像(镜像结构)
Dockerfile自定义镜像(镜像结构)将自己的微服务制作成镜像 镜像结构 总结:原创 2022-10-30 00:11:27 · 124 阅读 · 0 评论 -
48、Docker(宿主机目录直接挂载到容器(跳过数据卷))
Docker(宿主机目录直接挂载到容器(跳过数据卷))案例: 第一步:将压缩包放入目录 第二步:将压缩包恢复为镜像 第三步:创建目录 第四步:将配置文件放入conf文件夹 第五步:写好命令再粘贴到控制台运行 查看 第六步:测试(打开一个mysql客户端建立连接) 对比:(容器挂载到数据卷/容器文件直接挂载到宿主机目录) 总结:原创 2022-10-30 00:10:19 · 576 阅读 · 0 评论 -
47、Docker(挂载数据卷)
Docker(挂载数据卷) 案例:(可以在高级语言工具中打开文件并且修改) 总结:原创 2022-10-30 00:07:48 · 58 阅读 · 0 评论 -
46、Docker(数据卷:宿主机文件通过数据卷操作挂载到数据卷的容器数据)
Docker(数据卷:宿主机文件通过数据卷操作挂载到数据卷的容器数据)问题:docker容器内的数据不便于修改(需要进入容器内部)。。。。。。数据卷就是将容器与容器的数据进行解耦解决了修改数据的困难。解决了数据共享的困难。解决了升级维护的困难。原创 2022-10-30 00:06:34 · 389 阅读 · 0 评论 -
Docker(容器操作案例(更改镜像的显示内容))
Docker(容器操作案例(更改镜像的显示内容)) 第一步:进入容器内部 第二步:查看路径 *pwd :当前所在位置*ls : 下面目录第三步:查找nginx的静态资源所在目录(因为要去改nginx的首页) 第四步:进入nginx镜像的静态资源所在位置 第五步:查看首页界面 第六步:修改首页页面(vi可不行,因为容器里面是阉割版的没有vi这个函数)Vi无法用 测试: 退出容器(exit) 第七步:停止容器 查看停止前后状态 *docker ps查看所有的容器(但是默认是运行的容器) docker p原创 2022-10-30 00:04:57 · 579 阅读 · 0 评论 -
41、Docker(容器操作)
Docker(容器操作) 2、端口映射:将服务主机的一个端口与一个端口(容器端口)产生一个关联映射,这样当请求到服务主机的端口80就转发到容器端口执行。3、端口映射的作用 :将一个完全隔离的容器,通过一个暴露的窗口来访问。4、-p 80:80(这个后面才是容器端口)第一步:查看有的镜像 第二步:创建一个容器(里面放了一个镜像) 第三步:查看容器的运行状态 第四步:访问nginx(80可以省略不写) 第五步:查看日志(我们访问浏览器端口产生的日志)docker logs mn 帮助文档 持续跟踪日志:doc原创 2022-10-30 00:00:47 · 140 阅读 · 0 评论 -
41、RabbitMQ(简单队列模型)
RabbitMQ(简单队列模型)接收消息:(回调函数的机制)为什么又要创建队列(是我们消息的生成者和消费者的启动顺序是不确定的。为了避免找不到所以两者都去声明,是一个保险措施)这里我们的订阅消息用来一个匿名内部类的方式。写好了拿到消息后要如何处理。将这个行为挂到了队列上(当这个队列上有了消息,就会执行)原创 2022-10-29 23:58:06 · 135 阅读 · 0 评论 -
40、Docker(容器命令)
Docker(容器命令) *docker pause/unpause 暂停/运行(因为暂停只是进程挂起,容器关联内存暂存起来cpu不再执行这个进程而恢复了就内存空间恢复接着运行所以就是pause/unpause)*docker stop/start 停止/运行(停止则是杀死进程,运行就是新的进程了所以就是stop/start)*docker ps :查看所有运行的容器及状态*docker logs :查看容器运行日志*docker exec :进入容器执行命令*docker rm 删除指定容器原创 2022-10-29 23:54:43 · 294 阅读 · 0 评论 -
39、Docker(镜像命令)
Docker(镜像命令) 镜像操作命令:*docker images 查看镜像*docker rmi 删除镜像*docker pull 拉取镜像*docker save 保存镜像为一个压缩包*docker load 加载压缩包为镜像 --help 查看用法这个就是语法 这个就是后面的[options] 这个就是镜像和版本 第一步:拉取镜像docker pull nginx 第二步:查看镜像 *1 镜像名称 *2最新版本(上面我们没有指定版本所以就是latest最新版本)*3镜像的id*4多久前更新*5原创 2022-10-28 09:18:44 · 1967 阅读 · 0 评论 -
37、Docker(docker架构:cs架构)
Docker(docker架构:cs架构)C:client客户端:向docker发送命令,或者远程调用S:server服务端:处理docker命令,管理镜像,容器等镜像:就是docker将那些应用程序及其所需要的依赖,函数库,环境,配置打包在一起(只能可读(防止数据污染))容器:需要写数据的时候就从镜像中拷贝一份到容器中再来写原创 2022-10-28 09:15:43 · 684 阅读 · 0 评论 -
36、Docker(认识/解决的问题)
Docker(认识/解决的问题) 部署问题: 解决: Docker解决的问题:2、解决开发、测试。。不同环境的差异问题 总结:原创 2022-10-28 09:14:16 · 116 阅读 · 0 评论 -
35、Docker(就是为了解决微服务越来越多产生的部署难题)
Docker(就是为了解决微服务越来越多产生的部署难题)原创 2022-10-28 09:12:41 · 346 阅读 · 0 评论 -
34、Gateway网关(跨域问题处理(允许options请求+CORS))
CORS就是就是浏览器发请求询问服务器允许什么跨域。Gateway网关(跨域问题处理(允许options请求+CORS))跨域问题:是浏览器禁止******发生跨域ajax请求(而我们的orderservice到userservice并不是ajax请求,所以没有跨域问题)原创 2022-10-28 09:11:47 · 1125 阅读 · 0 评论 -
33、Gateway网关(过滤器执行顺序)
Gateway网关(过滤器执行顺序) 总结:原创 2022-10-28 09:09:19 · 253 阅读 · 0 评论 -
32、Gateway网关(全局过滤器GlobalFilter)
Gateway网关(全局过滤器GlobalFilter) 案例: 第一步:在网关gateway新建一个过滤器器类(并且实现接口GlobalFilter) 第二步:写过滤器 第三步:让过滤器生效(order越小优先级越高) *@order是过滤器多个过滤器的优先级(用@order注解行,用类实现Ordered接口也行)第二种:实现Ordered接口也行 测试: 总结:原创 2022-10-28 09:07:56 · 520 阅读 · 0 评论