分布式、微服务系列
文章平均质量分 91
Marvin-Fox
这个作者很懒,什么都没留下…
展开
-
Elasticsearch(二)集成Spring Boot 基本的API操作
如果创建项目后拉取不到对应依赖,springboot 可以选用低一些的稳定版本例如 2.3.2.RELEASE 版本。Java使用对应的rest风格调用ES是通过client依赖包进行操作的。配置需要的 maven 依赖。(当然也可自定义ES版本)原创 2024-10-11 16:35:25 · 463 阅读 · 0 评论 -
Elasticsearch(一)基本语法命令
重要】1、关于分词term:直接查询精确的解析(会用到分词器,分词器存在两种情况,text 和 keyword)match:会使用分词器解析!(先分析文档,然后再通过分析的文档进行查询)两个类型text:会被分词器分析keyword:不会被分词器分析。......原创 2022-08-14 15:06:02 · 3039 阅读 · 1 评论 -
MongoDB(一)基本介绍及安装
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。区别官方地址:MongoDB Comm原创 2022-07-03 18:28:14 · 345 阅读 · 0 评论 -
雪花算法(SnowFlake)
现在的服务基本是分布式、微服务形式的,而且大数据量也导致分库分表的产生,对于水平分表就需要保证表中 id 的全局唯一性。对于 MySQL 而言,一个表中的主键 id 一般使用自增的方式,但是如果进行水平分表之后,多个表中会生成重复的 id 值。那么如何保证水平分表后的多张表中的 id 是全局唯一性的呢?如果还是借助数据库主键自增的形式,那么可以让不同表初始化一个不同的初始值,然后按指定的步长进行自增。例如有3张拆分表,初始主键值为1,2,3,自增步长为3。当然也有人使用 UUID 来作为主键,但是 UUID转载 2022-06-05 15:43:36 · 537 阅读 · 0 评论 -
分布式事务解决方案——Alibaba-seata
一、seata介绍官方文档:Seata 是什么Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。Seata术语TC (Transaction Coordinator) - 事务协调者维护全局和分支事务的状态,驱动全局事务提交或回滚。负责通知命令的中间件Seata-ServerTM (Transaction Manage原创 2022-05-14 14:56:31 · 1532 阅读 · 1 评论 -
Docker(三)常用容器安装系列
var/lib/docker #默认安装的路径total 44drwx--x--- 8 root root 4096 Jul 6 22:37 containers #容器相关信息(运行时容器内部的一些配置)drwx------ 3 root root 4096 Apr 5 2022 image #镜像元数据相关信息drwxr-x--- 3 root root 4096 Apr 5 2022 network #网络模式相关信息。原创 2022-04-08 16:45:55 · 2619 阅读 · 0 评论 -
Docker(二)常用命令
一、帮助命令docker versiondocker infodocker 命令 --help帮助文档的地址:Reference documentation | Docker Documentation二、镜像命令1、images(查看本地镜像)查看所有本地的主机上的镜像docker images [OPTIONS] [REPOSITORY[:TAG]]docker images -a 所有镜像docker iamges -q 所有镜像ID docker.原创 2022-04-07 11:43:05 · 15761 阅读 · 0 评论 -
Docker(一)安装和卸载
一、环境准备centOS 7环境查看查看系统内核:系统内核需要 3.10 以上的(必须)uname -r查看系统版本cat /etc/os-release二、安装Docker官方帮助文档:Install Docker Engine on CentOS | Docker Documentation1、卸载旧的版本(如果安装过)yum remove docker \ docker-client \ ...原创 2022-04-05 22:19:32 · 1506 阅读 · 0 评论 -
Nacos(二)服务注册与发现原理分析
Nacos 另一个非常重要的特性就是服务注册与发现,说到服务的注册与发现相信大家应该都不陌生,在微服务盛行的今天,服务是非常重要的,而在 Nacos 中服务更被称为他的一等公民。Nacos 支持几乎所有主流类型的 “服务” 的发现、配置和管理。了解过 Dubbo 的同学,应该对 Dubbo 的架构非常熟悉,最经典的一张架构图如下所示:图中的6个步骤的含义解释如下:其中图中最上方的 Registry 就是注册中心,负责服务的注册与发现。Dubbo 有自己的 Registry 实现,而 Nacos 则是另一种转载 2022-06-05 16:16:11 · 819 阅读 · 0 评论 -
Nacos(一)基本介绍及安装
一、下载Nacos官方这里从GitHub上下载你需要的版本:https://github.com/alibaba/nacos/releases二、安装和启动参考官方的Nacos快速开始手册:https://nacos.io/zh-cn/docs/quick-start.html我这里使用的是1.4.0.zip1、将下载的zip包解压并放到自己定义的文件夹下,解压后的内容如下解压命令unzip nacos-server-1.4.0.zip2、启动进入 bi..原创 2021-10-08 15:00:58 · 1708 阅读 · 0 评论 -
ActiveMQ入门
一、管理界面进入管理界面的地址:http://localhost:8161(IP:端口号)1、Queues(队列)标示 描述 Name 队列名称 Number Of Pending Messages 队列中有多少个消息等待出队列 Number Of Consumers 队列中有多少个消费者 Messages Enqueued 队列共有多...原创 2020-03-05 15:39:25 · 1871 阅读 · 0 评论 -
Spring Cloud(二-2) SpringCloud 注册中心 Eureka 集群是怎么保持数据一致的?
服务注册中心不可能是单点的,一定会有一个集群,那么集群中的服务注册信息如何在集群中保持一致的呢?首先要明确的是 Eureka 是弱数据一致性的。下面从2个方面来说明:什么是弱数据一致性 Eureka 是如何同步数据的1. 弱数据一致性我们知道 ZooKeeper 也可以实现数据中心,ZooKeeper 就是强一致性的。分布式系统中有一个重要理论:CAP。该...转载 2020-02-07 15:00:05 · 1340 阅读 · 2 评论 -
Redis(八)哨兵模式原理浅析
redis 哨兵模式浅析原创 2022-06-04 18:07:23 · 338 阅读 · 0 评论 -
Redis(七)主从复制原理浅析
一、缓存穿透的概念缓存穿透的情景:每一次请求不同的值(符合有效的值规则),并且该值是数据库不可能存在的。那么就会出现不停的访问数据库,并返回空。这样就使 redis 无效化,便是缓存穿透。二、布隆过滤器布隆过滤器的本质:位数组(二进制向量) 一系列随机映射函数布隆过滤器实现思想:假设有一个 bit数组,里面存的只有0和1;0代表不存在,1...............转载 2022-06-07 11:41:11 · 235 阅读 · 1 评论 -
Redis(六)单线程I/O多路复用模型浅析
Redis 的 I/O 多路复用模型有效的解决单线程的服务端,使用不阻塞方式处理多个 client 端请求问题。在看 I/O 多路复用知识之前,我们先来看看 Redis 的客服端怎么跟客服端建立连接的、单线程 socket 服务端为什么会存在 I/O 阻塞。一、Redis客户端连接Redis 通过监听一个 TCP 端口或者 Unix socket 的方式来接收来自 client 端的连接,当一个连接建立后,Redis 内部会进行以下一些操作: 首先,客户端 socket 会被设置为非阻塞模转载 2022-05-01 20:30:54 · 975 阅读 · 0 评论 -
Redis(五)缓存雪崩、缓存击穿、缓存穿透
一、缓存雪崩通常我们为了保证缓存中的数据与数据库中的数据一致性,会给 Redis 里的数据设置过期时间,当缓存数据过期后,用户访问的数据如果不在缓存里,业务系统需要重新生成缓存,因此就会访问数据库,并将数据更新到 Redis 里,这样后续请求都可以直接命中缓存。那么,当大量缓存数据在同一时间过期(失效)或者 Redis 故障宕机时,如果此时有大量的用户请求,都无法在 Redis 中处理,于是全部请求都直接访问数据库,从而导致数据库的压力骤增,严重的会造成数据库宕机,从而形成一系列连锁反应,造成转载 2022-04-23 17:41:33 · 339 阅读 · 0 评论 -
【未完成】Redis(四)Spring Boot 整合 spring-boot-starter-data-redis
一、spring-boot-starter-data-redis提供的功能1、连接池自动管理,提供了一个高度封装的“RedisTemplate”类2、针对jedis客户端中大量api进行了归类封装,将同一类型操作封装为operation接口ValueOperations:简单K-V操作 HashOperations:针对map类型的数据操作 ListOperations:针对lis...原创 2019-11-20 18:04:04 · 2252 阅读 · 0 评论 -
Redis(三)了解持久化与事务
一、Redis事务(似乎不常用)1、Redis事务介绍为了保证多条命令组合的原子性, Redis提供了简单的事务功能以及集成Lua脚本来解决这个问题。事务表示一组动作, 要么全部执行, 要么全部不执行 。Redis的事务是通过MULTI,EXEC,DISCARD和WATCH这四个命令来完成的。 Redis的单个命令都是原子性的,所以这里确保事务性的对象是命令集合。 Redis将命令...原创 2019-09-14 12:13:10 · 305 阅读 · 0 评论 -
Redis(二)数据类型及基本用法
一、Redis基本特性Redis是基于内存的Key-Value型高性能的NoSQL数据库。为什么说redis能够快速执行?(1) redis是基于内存的,内存的读写速度非常快(非常快速)(2) redis采用单线程,避免了不必要的上下文切换线程的时间和竞争条件(3) redis使用多路复用技术(非阻塞IO - IO多路复用),可以处理并发的连接。非阻塞IO 内部实现采用epo...原创 2019-09-11 23:45:31 · 1225 阅读 · 1 评论 -
Redis(一)基本介绍及安装
一、Redis 概述在我们日常的Java Web开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据量的需求,比如一些商品抢购的情景,或者是主页访问量瞬间较大的时候,单一使用数据库来保存数据的系统会因为面向磁盘,磁盘读/写速度比较慢的问题而存在严重的性能弊端,一瞬间成千上万的请求到来,需要系统在极短的时间内完...原创 2019-09-11 23:34:26 · 211 阅读 · 0 评论 -
RabbitMQ(五)死信队列与延时队列
DLX,全称为 Dead-Letter-Exchange,可以称为死信交换机,也有人称之为死信邮箱,当消息在一个正常队列中变成死信(dead message)之后,它能被重新发送到另一个交换机中,这个交换机就是DLX,绑定DLX的队列就称之为死信队列。消息变成死信,可能由于以下原因:DLX也是一个正常的交换机,和一般的交换机没有区别,它能在任何队列上被指定。实际上就是设置某一个队列的属性,当这个队列中存在死信时,rabbitMQ就会自动的将这个消息重新发布到设置的DLX上去,进而被路由到另一个队列,即死信队原创 2022-06-11 00:07:44 · 2498 阅读 · 0 评论 -
RabbitMQ(四)RabbitTemplate的 发布确认 和 事务
介绍confirm的工作机制。使用spring-amqp介绍事务以及发布确认的使用方式。因为事务以及发布确认是针对channel来讲,所以在一个连接中两个channel,一个channel可以使用事务,另一个channel可以使用发布确认,并介绍了什么时候该使用事务,什么时候该使用发布确认confirm的工作机制Confirms是增加的一个确认机制的类,继承自标准的AMQP。这个类...原创 2019-10-03 12:21:18 · 6718 阅读 · 0 评论 -
RabbitMQ(三)保证消息的可靠性传输【重要】
一、Rabbit如何保证消息的可靠性传输(如何处理消息丢失的问题)?1、生产者弄丢了数据(事务、confirm)生产者将数据发送到RabbitMQ的时候,可能数据就在半路给搞丢了,因为网络问题啥的,都有可能。此时可以选择用RabbitMQ提供的事务功能,就是生产者发送数据之前开启RabbitMQ事务channel.txSelect,然后发送消息,如果消息没有成功被RabbitMQ接...原创 2019-09-23 18:44:00 · 798 阅读 · 1 评论 -
RabbitMQ(二)Springboot整合及使用
一、RabbitMQ的重要概念RabbitMQ是一种基于amq协议的消息队列,本文主要记录一下使用spring-boot-starter-amqp操作 rabbitmq。a) 虚拟主机(vhost)虚拟主机:一个虚拟主机持有一组交换机、队列和绑定。虚拟主机的作用在于进行权限管控,rabbitmq默认有一个虚拟主机"/"。可以使用rabbitmqctl add_vhost命令添加虚...原创 2019-09-26 17:25:32 · 3507 阅读 · 0 评论 -
RabbitMQ(一)基础和底层API使用
一、消息队列1、什么是消息队列MQMQ 是Message Queue的缩写,消息队列是应用程序和应用程序之间的通信方法。RabbitMQ是一个开源的,在AMQP基础上完成的,可复用的企业消息系统。AMQP:即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计...原创 2019-08-28 00:44:56 · 1716 阅读 · 0 评论 -
VO,DTO,DO,PO的概念、区别和用处
一、概念VO(View Object):视图层,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对象。...原创 2019-10-14 23:15:13 · 2024 阅读 · 1 评论 -
分布式、微服务、集群的区别
才开始接触的时候我对这三个概念真的是一头雾水,尤其是对分布式和微服务的区别,下面就以我自己的理解介绍一下这三个概念一、集群(典型的系统部署方式)集群:同一个应用,部署在多个服务器上就是相当于单应用的多次拷贝,分散部署在多个物理服务器,多台服务器部署相同应用构成一个集群作用:通过负载均衡设备共同对外提供服务,从而缓解服务器压力二、分布式(分模块的系统部署方式)分布式:同...原创 2019-08-15 15:48:04 · 479 阅读 · 0 评论