RabbIT

Zipkin整合rabbitmq和mysql

隐身守侯 提交于 2021-02-20 08:59:35
存储跟踪数据 Zipkin Server默认时间追踪数据信息保存到内存,这种方式不适合生产环境。因为一旦Service关闭重 启或者服务崩溃,就会导致历史数据消失。Zipkin支持将追踪数据持久化到mysql数据库或者存储到 elasticsearch中。这里已mysql为例。 准备数据库 可以从官网找到Zipkin Server持久mysql的数据库脚本。 CREATE TABLE IF NOT EXISTS zipkin_spans ( `trace_id_high` BIGINT NOT NULL DEFAULT 0 COMMENT ' If non zero, this means the trace uses 128 bit traceIds instead of 64 bit ' , `trace_id` BIGINT NOT NULL , `id` BIGINT NOT NULL , `name` VARCHAR ( 255 ) NOT NULL , `remote_service_name` VARCHAR ( 255 ), `parent_id` BIGINT , `debug` BIT ( 1 ), `start_ts` BIGINT COMMENT ' Span.timestamp(): epoch micros used for endTs query

springcloud -- sleuth+zipkin整合rabbitMQ详解

巧了我就是萌 提交于 2021-02-19 11:02:40
为什么使用RabbitMQ? 我们已经知道,zipkin的原理是服务之间的调用关系会通过HTTP方式上报到zipkin-server端,然后我们再通过zipkin-ui去调用查看追踪服务之间的调用链路。但是这种方式存在一个隐患,如果微服务之间与zipkin服务端网络不通,或调用链路上的网络闪断,http通信收集方式就无法工作。而且zipkin默认是将数据存储在内存中的,如果服务端重启或宕机,就会导致数据丢失。 所以我们不仅将数据存储在zipkin-serve中,同时还能通过某个消息存储的容器将本次调用其他服务的消息数据进行持久化存储,这样不就可以解决问题吗?结合RabbitMQ证好解决了这一问题,再发一份到消息队列中去。 安装RabbitMQ 查找镜像 进入docker hub镜像仓库地址: https://hub.docker.com/_/rabbitmq?tab=description ,选择带有 "management" 的版本(包含管理界面) docker 搜素下载 docker search rabbitmq:management 拉取镜像 docker pull rabbitmq:3.7.7-management // 1 docker pull rabbitmq:management // 2 运行rabbitMQ docker run -d -p 5672:5672

【CSS】文字毛玻璃效果(简单版)

╄→гoц情女王★ 提交于 2021-02-10 11:39:05
http://www.jianshu.com/p/a649508b4f70 微信订阅号:Rabbit_svip 用文本阴影和字体透明颜色可以做出毛玻璃的效果。 <div>毛玻璃</div> <style> div { color: rgba(0, 0, 0, 0); text-shadow: 0 0 10px #000; cursor: default; transition: color 0.3s ease, text-shadow 0.3s ease; } div:hover { color: rgba(0, 0, 0, 1); text-shadow: none; } </style> 微信订阅号:Rabbit_svip 来源: oschina 链接: https://my.oschina.net/u/4387439/blog/3206523

nginx 反向代理及 https 证书配置

為{幸葍}努か 提交于 2021-02-09 00:07:21
nginx 反向代理及 https 证书配置 author: yunqimg(ccxtcxx0) 1. 编译安装nginx 从官网下载 nginx源码 , 并编译安装. ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module make && make install 编译时注意添加 SSL 模块, 否则配置 https 时会失败. 安装完成后, nginx 程序默认保存在 /usr/local/nginx/sbin/ 目录下, 启动 nginx 命令如下 /usr/local/nginx/sbin/nginx -c /home/nginx/nginx.conf 推荐使用指定 配置文件路径方式启动, 这样在 docker 方式部署时方便修改配置文件. 2. 反向代理配置 基本配置范例: ## Basic reverse proxy server ## upstream backend { server 127.0.0.1:8080; # local server } server { location / { proxy_pass http://backend; } } upstream 节点记录后端服务器地址, backend 是节点名称. Nginx

Kafak的高可用、消息可靠性以及消息顺序消费

本秂侑毒 提交于 2021-02-07 06:37:26
Kafak是如何实现高可用: 1.zk部署2n+1个节点,形成zk集群,保证高可用。 2.Kafak Broker部署集群,每一个Kafak节点就是一个Broker。每个Topic的partition,基于副本机制,在broker集群中复制。形成replica副本,保证消息存储的可靠性。每个Replica副本都会选出一个leader分区(Partition),提供给客户端进行读写。 3.Kafak Producer无需考虑集群,因为和业务服务器部署在一起。Producer从zk拉取到Topic的元数据,选择对应的Partiton的leader分区,进行消息写入。 而Borker根据producer的request.acquire.acks配置,判断是写入自己成功就响应producer成功还是写入所有broker(broker上的partition)成功在响应。 4.Kafak Consumer集群部署 每个Consumer分配对应的Topic partition,根据对应的分配策略。并且Consumer从leader分区拉取消息,另外当有consmuer加入或者减少,都会将Topic partition再均衡,重新分配给Consumer。 消息可靠保证 1.消费端的保证消息可靠 取消自动确认,消费完成调用ack,同时做好消息处理冥等处理。 唯一可能导致消息丢失的情况

新RabbitMQ精讲,项目驱动落地,分布式事务拔高

一个人想着一个人 提交于 2021-01-25 08:00:02
download: 新RabbitMQ精讲,项目驱动落地,分布式事务拔高 新RabbitMQ精讲,项目驱动落地,分布式事务拔高 大部分同学的现状是:熟悉表面理论知识,却无法很好应用到工作中。我们收到这些反馈后,才诞生了本课程。 为了避免只学到死知识、不敢在生产环境实操的尴尬局面。本课从知识上也是从入门到精通,但却全程用项目递进的方式讲授知识。目标就是会用,课程中还融入了很多开发小Tips。并且把深度做足:解读核心源码,基于RabbitMQ二次开发,手写分布式事务框架,提升技术深度,培养框架思维。 适合人群 对RabbitMQ不了解的Java开发者 有RabbitMQ基础,实际使用经验有限的Java开发者 对RabbitMQ感兴趣的开发者 技术储备要求 Java语言基础、SpringBoot基础   概要编辑   RabbitMQ是一种实现高级消息队列协议(amqp )的开源消息代理软件(也称为面向消息的中间件)。 RabbitMQ服务器用Erlang语言编写,集群和故障转移构建在开放电信平台上。 所有主要的编程语言都有与代理接口进行通信的客户端库。   历史记录编辑   Rabbit技术有限公司开发RabbitMQ并支持它。 起初,Rabbit技术是LSHIFT和CohesiveFT于2007年成立的合资企业,2010年4月被VMware旗下的SpringSource收购。

消息中间件Rabbitmq(07)

故事扮演 提交于 2021-01-23 13:08:00
Rabbitmq主体架构 首先这个过程走分三个部分, 1、客户端(生产消息队列)。 2、RabbitMQ服务端(负责路由规则的绑定与消息的分发)。 3、客户端(消费消息队列中的消息);由图可以看出,一个消息可以走一次网络却被分发到不同的消息队列中,然后被多个的客户端消费,那么这个过程就是RabbitMQ的核心机制,RabbitMQ的路由类型与消费模式。 RabbitMQ中间件分为服务端(RabbitMQ Server)和客户端(RabbitMQ Client),服务端可以理解为是一个消息的代理消费者,客户端又分为消息生产者(Producer)和消息消费者(Consumer)。 运行原理图 Exchange(交换器):用于接受、分配消息; Direct Exchange 在我们之前的日志系统中,所有的消息被广播给所有的消费者,但是本章的需要是希望有一个程序可以只接收error级别的日志并保存到磁盘中,而不用浪费空间去存储那些info、warning级别的日志。   我们正在用的广播模式的交换器并不够灵活,它只是不加思索地进行广播。因此,需要使用direct exchange来代替。直连交换器的路由算法非常简单:将消息推送到binding key与该消息的routing key相同的队列。 为了说明这点,请看下图: 在该图中,直连交换器X上绑定了两个队列

终端安全篇-开篇

拥有回忆 提交于 2021-01-16 08:44:33
由于工作需要开始接触终端安全内容的知识,这里开始记录我的成长路径和学习历程~ 开篇上的内容主要介绍一下什么是终端安全,为什么要研究终端安全。 带着问题我们开始这场探索旅程吧~~~ 什么是终端安全 百科定义:终端安全(endpoint security)是一种 网络防护方法 ,它需要企业网络上每个计算设备得到网络访问许可前遵从特定标准。 终端可能包括 PC 、笔记本、智能手机、平板电脑( tablet )和专用设备,如条形码扫描器(bar code reader)或POS终端。 为什么要研究终端安全 因为工作需要,哈哈哈~ 正经点,是因为我要为社会服务,打击黑产还数据社会一片清明和净朗!!!(正经脸--) 终端面临的威胁 病毒木马攻击 伪造用户登陆 随意安全应用程序 数据明文存储易造成失窃事件 网络连接威胁 等等~ 通常计算机终端还会被攻击者作为攻击跳板,发起针对特定服务器或者特定网络的攻击。 网络攻击典型案例 勒索病毒:在2017年5月12日,一款名为WannaCry勒索病毒通过MS17-010漏洞在全球范围大爆发,感染了大量的计算机。此后,Petya、Bad Rabbit、GlobeImposter等勒索病毒相继对企业及机构发起攻击。 挖矿木马:伴随着比特币等虚拟数字货币交易火爆的同时,越来越多的人利用数字虚拟币交易大发横财,吸引大量黑产从业人员进入挖矿产业

SpringBoot整合RabbitMQ

痞子三分冷 提交于 2021-01-10 05:35:11
首先建立工程 然后 建立一个配置类,用来配置Rabbit相关,主要是交换机和队列以及绑定关系。 package com.example.demo.conf; import org.springframework.amqp.core.* ; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * @program: boot-rabbitmq * @description: * @author : 001977 * @create: 2018-07-02 17:45 */ @Configuration public class RabbitConfiguration { /** * If not conf the exchange * Channel shutdown: channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no exchange 'hello.direct' in vhost '/', class-id=60, method-id=40) * */

RabbitMQ学习系列教程三:快速入门

蹲街弑〆低调 提交于 2021-01-09 09:58:18
快速入门:消息的生产者和消费者 生产者的代码步骤: 1:获取到连接的工厂 ConnectionFactory 2:从工厂中获取到一个连接:connection 3:重建一个数据通信的通道,可以发送和接收消息对象:channel 4:通过channel发送消息 5:关闭流 代码编写: public class Procuder { public static void main(String[] args) throws IOException, TimeoutException { //1:创建一个connectioFactory工厂对象,并进行配置 ConnectionFactory connectionFactory = new ConnectionFactory(); //设置ip 端口 vhost等 connectionFactory.setHost("192.168.31.128"); connectionFactory.setPort(5672); connectionFactory.setVirtualHost("/"); //2:通过工厂对象获取到connection对象 Connection connection = connectionFactory.newConnection(); //3:通过connection对象获取到一个消息通信的通道 channel