Nginx配置HTTPS
配置步骤1、下载Nginx
1wget http://nginx.org/download/nginx.1.20.1.tar.gz
2、解压
1tar -zxvf nginx-1.20.1.tar.gz
3、进入解压目录编译
1234567891011121314151617./configure \--prefix=/usr/local/nginx \--pid-path=/var/run/nginx.pid \--lock-path=/var/lock/nginx.lock \--error-log-path=/var/log/nginx/error.log \--http-log-path=/var/log/nginx/access.log \--with-http_gzip_static_module \--http-client-body-temp-path=/var/temp/nginx/client \--http-proxy-temp-path=/var/temp/nginx/proxy \--http-fastcgi-temp-path=/var/temp/ngi ...
kafka如何实现高可用
一.高可用的由来1.1 为什么需要Replication在Kafka在0.8之前的版本中,是没有Replication,一旦某个broker宕机,则其上的所有Partition数据都不可被消费,这与Kafka的数据持久化和Delivery Guarantee设计原则相违背。
如果Producer使用同步模式则Producer则会在尝试重新发送message.send.max.retries(默认值是3)次后抛出异常,用户可以选择停止发送后续数据或者继续发送。而前者会造成数据的阻塞,后者会造成发送到Kafak数据的丢失。
如果Producer使用异步模式,则Producer会尝试重新发送message.send.max.retries(默认值是3)次后记录该异常并继续发送后续数据,这会造成数据丢失并且用户只能通过日志发现问题。同时,Kafka的Producer并没有对异步模式提供fallback接口。
由此可见,在没有Replication的情况下,一旦某机器宕机或者某个Broker停止工作会曹成整个系统的可用性的降低。随着集群规模的增加,整个集群中出现该类异常的几率大大增加,由此可见, ...
kafka选主算法 kafka选举原理
Kafka核心总控制器Controller在Kafka集群中会有一个或者多个broker,其中有一个broker会被选举为控制器(Kafka Controller),它负责管理整个集群中所有分区和副本的状态。
当某个分区的leader副本出现故障时,由控制器负责为该分区选举新的leader副本。
当检测到某个分区的ISR集合发生变化时,由控制器负责通知所有broker更新其元数据信息。
当使用kafka-topics.sh脚本为某个topic增加分区数量时,同样还是由控制器负责让新分区被其他节点感知到。
Controller选举机制在kafka集群启动的时候,会自动选举一台broker作为controller来管理整个集群,选举的过程是集群中每个broker都会尝试在zookeeper上创建一个 /controller 临时节点,zookeeper会保证有且仅有一个broker能创建成功,这个broker就会成为集群的总控器controller。
当这个controller角色的broker宕机了,此时zookeeper临时节点会消失,集群里其他broker会一直监听这个临时 ...
单点登录不同域之间
扩展上面我们Cookie的作用域是整个二级域名laogu.com。所以不需要进行用户信息在Cookie之间的传递,假如Cookie的作用域是三级域名,或者各个系统之间的二级域名都不一样如何单点登录,这样单点登录就多了一步同步Cookie。保证Client 域名下和 ssoserver域名都有一个同名同值的 Cookie。
第一次单点登录的关键
浏览器第一次访问client1什么信息没带,服务器判断未登录,命令浏览器重定向到sso-server,并且带上成功以后去哪里的地址
浏览器跑去认证中心,认证中心判断未登录过,返回登录页
填写账号密码点击登录,提交账号密码过去,还是记录了redirect..url
认证中心判断登录成功将用户信息存入Redis: UUID: userId
命令浏览器把上面生成的随机UUID保存在自己的认证中心域名对应的 cookie 中,key为“sso_user”。
命令浏览器重定向到原来位置,并且把随机UUID保存在自己的 client1 域名下
判断浏览器是否携带了cookie?(第一次没有),判断是否携带了sso_user这个固定参数(跳转回来的 ...
Docker扩展
前置一:利用Dockerfile 将一个war包生成镜像的Dockerfile
1、docker下创建项目工程名称
12345mkdir -p /usr/local/docker/yida/ cd /usr/local/docker/yida 、# 将桌面qfjy_exam.zip复制到访目录下cp yida-sync-1.0-SNAPSHOT.zip /usr/local/docker/yida/
2、创建镜像文件Dockerfile
1234567FROM tomcat WORKDIR /usr/local/tomcat/webapps/ROOT # 指定工作目录RUN rm -rf * # 删除指定目录所有内容COPY yida-sync-1.0-SNAPSHOT.zip /usr/local/tomcat/webapps/ROOT # 复制到ROOT下RUN unzip yida-sync-1.0-SNAPSHOT.zip # 解压文件RUN rm -rf yida-sync-1.0-SNAPSHOT.zip # 移除多余的压缩包WORKDIR /usr/local/t ...
酷应用接口
添加管理员请求URL1https://dingtalk.yijingcloud.com/cool/addAdmin?conversationId=cidBUESuG8PMNm3ZaVug55Zmg==&dingUserIds=3130162403784614,2842200349792907
请求体
名称
类型
必填
描述
conversationId
String
是
群组ID
dingUserIds
List
是
用户的钉钉id集合
响应体示例
Success
1234567{ "errCode":0, "errMsg":"ok", "data":{ }}
删除管理员请求URL1https://dingtalk.yijingcloud.com/cool/delAdmin?conversationId=cidBUESuG8PMNm3ZaVug55Zmg==&dingUserIds=31301624037 ...
RocketMQ入门到精通
分布式消息队列RocketMQ
1. RocketMQ概述1.1 MQ概述1. MQ简介MQ,Message Queue,是一种提供消息队列服务的中间件,也称为消息中间件,是一套提供了消息生产、存储、消费全过程API的软件系统。消息即数据。一般消息的体量不会很大。
2. MQ用途从网上可以查看到很多的关于MQ用途的叙述,但总结起来其实就以下三点。
限流削峰
MQ可以将系统的超量请求暂存其中,以便系统后期可以慢慢进行处理,从而避免了请求的丢失或系统被压垮。
异步解耦
上游系统对下游系统的调用若为同步调用,则会大大降低系统的吞吐量与并发度,且系统耦合度太高。而异步调用则会解决这些问题。所以两层之间若要实现由同步到异步的转化,一般性做法就是,在这两层间添加一个MQ层。
数据收集
分布式系统会产生海量级数据流,如:业务日志、监控数据、用户行为等。针对这些数据流进行实时或批量采集汇总,然后对这些数据流进行大数据分析,这是当前互联网平台的必备技术。通过MQ完成此类数据收集是最好的选择。
3. 常见MQ产品
ActiveMQ
ActiveMQ是使用Java语言开发一款MQ产品。早期很多公 ...
高性能消息中间件Kafka实战
1. RabbitMq概述1.1 MQ简介异步处理消息发送的时间取决于业务执行的最长的时间
应用解耦原本是需要订单系统直接调用库存系统
只需要将请求发送给消息队列,其他的就不需要去处理了,节省了处理业务逻辑的时间
流量消峰某一时刻如果请求特别的大,那就先把它放入消息队列,从而达到流量消峰的作用
1.2 RabbitMq简介
大多应用中,可通过消息服务中间件来提升系统异步通信,扩展解耦能力
消息服务中两个重要概念:
消息代理(message broker)** 和 目的地(destination)
当消息发送者发送消息后,将由消息代理接管,消息代理保证消息传递到指定目的地
消息队列主要有两种形式的目的地
队列(Queue)**:点对点消息通信(point - to - point)
主题(topic)**:发布(publish)/订阅(subscribe)消息通信
点对点式:
消息发送者发送消息,消息代理将其放入一个队列中,消息接收者从队列中获取消息内容,消息读取后被移出队列
消息只有唯一的发送者和接受者,单并不是说只能有一个接收者
发布订阅 ...
高性能消息中间件Kafka实战
1. RabbitMQ 高级特性(基于Spring)1.1 消息的可靠投递在使用 RabbitMQ 的时候,作为消息发送方希望杜绝任何消息丢失或者投递失败场景。RabbitMQ 为我们提供了两种方式用来控制消息的投递可靠性模式。
confirm 确认模式
return 退回模式
Rabbitmq 整个消息投递的路径为:producer—>rabbitmq broker—>exchange—>queue—>consumer
消息从 producer 到 exchange 则会返回一个 confirmCallback 。
消息从 exchange–>queue 投递失败则会返回一个 returnCallback 。
我们将利用这两个 callback 控制消息的可靠性投递
1.1.1. 前置准备
创建spring-rabbitmq-producer\src\main\resources\properties\rabbitmq.properties连接参数等配置文件;
12345rabbitmq.host=192.168.12.135rabbitmq ...
高性能消息中间件Kafka实战
Windows安装RabbitMq
由于其基于Erlang语言编写,所以先安装Erlang,下载地址
双击安装,安装路径不要与中文与空格
配置环境变量
path中添加
cmd中测试
安装RabbitMQ,下载地址
下载后双击安装
RabbitMQ Server安装完成之后,会自动注册为服务,并以默认配置进行启动
可能的问题:启动失败,通常是由于用户名为中文,导致默认的db和log目录访问出现问题。解决方法,写在RabbitMQ,配置环境变量RABBITMQ_BASE为一个不含中文的路径,如E:\rabbitmq,然后重新安装
Rabbit管理
进入rabbitMQ安装目录下的sbin目录,执行如下命令开启WEB管理插件,rabbitmq-plugins.bat enable rabbitmq_management
1234567891011121314C:\software\RabbitMQ\rabbitmq_server-3.7.18\sbin>rabbitmq-plugins.bat enable rabbitmq_managementEnabling ...








