RabbitMQ微服务通信微服务间通讯有同步和异步两种方式:
同步通讯:就像打电话,需要实时响应。-Feign调用
异步通讯:就像发邮件,不需要马上回复 -消息队列两种方式各有优劣,打电话可以立即得到响应,但是你却不能跟多个人同时通话。发送邮件可以同时与多个人收发邮件,但是往往响应会有延迟。
事件模式
在事件模式中,支付服务是事件发布者(publisher),在支付完成后只需要发布一个支付成功的事件(event),事件中带上订单id。
订单服务和物流服务是事件订阅者(Consumer),订阅支付成功的事件,监听到事件后完成自己业务即可。
为了解除事件发布者与订阅者之间的耦合,两者并不...
ELK技术栈
elasticsearch结合kibana、Logstash、Beats,也就是elastic stack(ELK)。被广泛应用在日志数据分析、实时监控等领域
elasticsearch是elastic stack的核心,负责存储、搜索、分析数据-elasticsearch底层是基于lucene来实现的
以elasticsearch为核心的技术栈,包括beats、Logstash、kibana、elasticsearch
正向索引和倒排索引正向索引
用户搜索数据,条件是title符合"%手机%"
逐行获取数据,比如id为1的数据
判断数据中的title...
Ribbon负载均衡流程
发起请求http://服务名xxx/服务接口名xxx/参数
被LoadBalancerInterceptor负载均衡拦截器拦截
LoadBalancerInterceptor调用RibbonLoadBanlancerClient真实执行
RibbonLoadBanlancerClient获取url中的服务参数与服务接口名
RibbonLoadBanlancerClient调用DynamicServerListLoadBalancer,从eurekaserver中得到服务列表
DynamicServerListLoadBal...
Yapi部署与使用1. 环境依赖,部署环境准备
Yapi依赖:
nodejs(7.6+)–nodejs版本有大问题!一定不能太新,Yapi已经一年没有更新了,新版本不兼容!
mongodb(2.6+)
git
这里使用Debian11来部署,单机部署
注意!注意!注意!这里nodois版本选择v8.17.0!!!使用nvm安装
1234567891011121314151617181920212223242526//依赖nodejs,安装nodejs,这里安装还有点麻烦,需要官网下载nodejs二进制的包,解压安装#mkdir /usr/local/nodejs#//nodej...
HashMap原理
HashMap内部是基于哈希表实现的键值对存储,继承 AbstractMap 并且实现了 Map 接口。
HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。
当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。
当获取对象时,通过键对象的equals()方法找到正确的键值对,然后返回值对象。
HashMap使用LinkedList来解决碰撞问题,当发生碰撞了,对象将会储存在LinkedList的下一个节点中。
当两个不同的键对象的hashcod...
简述Vim是从 vi 发展出来的一个文本编辑器。主流linux均自带vi编辑器,在这里简单记录vim用法,vi也基本相同,只是有些功能没有vim丰富。
模式
命令模式vim有三大模式,一般你使用vim这个命令打开一个文本,或者新建一个文本时,你进入的是命令模式命令模式是vim打开文件后默认进入的模式,这个模式不能插入字符你无法正常编辑文本,但是可以使用命令来操作文本,例如下面的一些命令。输入冒号“:”,文本的左下角将会出现闪动的光标,你可以在这里输入一些复杂命令。注意vim很重要的退出操作,也是在这里操作的-输入q表示正常退出,前提你没有修改文本,如果文本修改了,将提示你无法正常退出,此...
标题123456# 这是一级标题## 这是二级标题### 这是三级标题#### 这是四级标题##### 这是五级标题###### 这是六级标题
效果:
这是一级标题这是二级标题这是三级标题这是四级标题这是五级标题这是六级标题字体1234**这是加粗的文字***这是倾斜的文字****这是斜体加粗的文字***~~这是加删除线的文字~~
效果:这是加粗的文字这是倾斜的文字这是斜体加粗的文字这是加删除线的文字
引用123>这是引用的内容>>>这是引用的内容>>>>>>>>>>>>>这是引用的内容...
Dead Line–2021总结
“当你老了,回顾一生,就会发觉:什么时候出国读书、什么时候决定做第一份职业、何时选定了对象而恋爱、什么时候结婚,其实都是命运的巨变。只是当时站在三岔路口,眼见风云千樯,你作出抉择的那一日,在日记上,相当沉闷和平凡,当时还以为是生命中普通的一天。但一场巨变,已经发生了,地动山移,浑然不觉,当时只道是寻常。”
陶杰 《杀鹌鹑的少女》
1.消失的2021
2021年,对我而言,是没有锚点的一个年度,彷佛一切都存在于2020,2020奥运会,2020的节奏,2020的疫情,生活粘稠得像麦芽糖,只有时光一往无前,只有不断收到的朋友结婚请柬,在提醒着我,时间,又过...
认识微服务
微服务是系统架构的一种设计风格,将一个原本独立的服务拆分成多个小型服务,每个服务独立运行在在各自的进程中,服务之间通过 HTTP RESTful API 进行通信.每个小型的服务都围绕着系统中的某个耦合度较高的业务进行构建。
微服务是一种经过良好设计的分布式架构方案,而全球的互联网公司都在积极尝试自己的微服务落地方案。其中在java领域最引人注目的是SpringCloud提供的方案。
单一职责:微服务拆分粒度更小,每个服务都应对唯一的业务能力,做到单一职责
自治:团队独立、技术独立、数据独立,独立部署和交付
面向服务:服务提供统一标准的接口,与语言无关、与技术无关
隔离性...
1. Mysql主从复制介绍MySQL主从复制是一个异步的复制过程,底层是基于Mysql数据库自带的二进制日志功能。就是一台或多台MySQL数据库(slave,即从库)从另一台MySQL数据库(master,即主库)进行日志的复制然后再解析日志并应用到自身,最终实现从库的数据和主库的数据保持一致。MySQL主从复制是MySQL数据库自带功能,无需借助第三方工具。
二进制日志:
二进制日志(BINLOG)记录了所有的 DDL(数据定义语言)语句和 DML(数据操纵语言)语句,但是不包括数据查询语句。此日志对于灾难时的数据恢复起着极其重要的作用,MySQL的主从复制, 就是通过该bi...