CentOS部署分布式对象存储服务MinIO
MinIO 是在 GNU Affero 通用公共许可证 v3.0 下发布的高性能对象存储。 它是与 Amazon S3 云存储服务兼容的 API。 使用 MinIO 为机器学习、分析和应用程序数据工作负载构建高性能基础架构。
0x00 单机部署
使用以下命令在运行 64 位 Intel/AMD 架构的 Linux 主机上运行独立的 MinIO 服务器。将 /data替换为您希望 MinIO 存储数据的驱动器或目录的路径。
123wget https://dl.minio.org.cn/server/minio/release/linux-amd64/miniochmod +x minio./minio server /data --console-address:10000
将/data替换为您希望 MinIO 存储数据的驱动器或目录的路径。
下表列出了支持的架构。 将 wget URL 替换为您的 Linux 主机的架构。
架构
下载地址
64-bit Intel/AMD
https://dl.minio.org.cn/server/minio/releas ...
fastjson autoType漏洞解决方案
0x00 漏洞概述
漏洞等级
高危
漏洞编号
暂无
CVSS评级
暂无
公开状态
暂无
在野利用
暂无
披露链接
https://github.com/alibaba/fastjson/wiki/security_update_20220523
更新时间
20220523
影响版本
Fastjson ≤ 1.2.80
解决方案
当前官方已发布最新版本,建议受影响的用户及时更新升级到最新版本。链接如下: https://github.com/alibaba/fastjson/releases
安全版本
FastJSON 1.2.83
0x01 漏洞详情
漏洞信息
近日,安全部捕获 Fastjson1.2.80 反序列化漏洞情报,攻击者可以利用该漏洞攻击远程服务器, 可能会造成任意命令执行。Fastjson已使用黑白名单用于防御反序列化漏洞,该利用在特定条件下可绕过默认autoType关闭限制,攻击远程服务器,风险影响较大。在默认配置下,当应用或系统使用Fastjson对由用户可控的JSON字符串进行解析时,将可能导致远程代码执行的危害 ...
hexo的butterfly主题添加Google Adsense后审核失败
出现问题
已在hexo的butterfly主题配置文件中添加google adsense的客户号,但是adsense审核提示失败,如何解决?
hexo的配置:
1234567# Google Adsense (谷歌廣告)google_adsense: enable: true auto_ads: true js: https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js client: ca-pub-1711515749423877 enable_page_level_ads: true
通过查看页面元素发现,静态页面中已经生成了adsense的代码:
1234<script async="async" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><script>(adsbygoogle = window.adsbygoo ...
通过一级域名访问网站
部署应用,如果需要对外提供域名访问,少不了配置域名解析。一般,域名从哪个服务商卖就从哪里解析,当然也支持其他DNS解析服务,国内大厂都有自己的域名服务和DNS解析服务。
如题,通过一级域名访问网站的问题,也就是如何通过带www访问网站和不带www访问网站的问题。此处我们需要区分两种情况,一种是有公网ip,一种是没有公网ip,只有cname。
如果我们有自己的服务公网ip地址,我们通过A记录,设置域名解析,假如我们的公网ip为:49.10.12.11。
主机记录
记录类型
记录值
说明
www
A
49.10.12.11
A记录值可以相同,可以出现多个A记录,www表示子域名www可以访问
@
A
49.10.12.11
表示一级域名可以访问
如上两条配置,则可以通过带www和不带www都能访问到服务。这是对于有服务器和公网ip的域名配置而言,如果我们就部署了一个静态博客,托管在三方的服务器上,我们肯定不能添加三方的ip,只能通过三方提供的cname做解析。
主机记录
记录类型
记录值
说明
www
CNAME
cname1
CNAME不允许出现两 ...
记录HttpClient连接池的优化
事情的经过是这样的
公司绝大多数应用都是springboot+tomcat提供web接口的服务,彼此之间使用httpclient调用,一直以来大家相安无事。直到决策引擎将Tomcat替换为netty,秀了一把webflux开始,我们的服务在空闲的时候就出现Connection Reset的问题。
连接池
我们常说的http连接是依托TCP而建立的。HTTP是应用层协议,TCP是传输层协议。TCP就是单纯的建立连接、传输数据。HTTP建立连接是非常繁琐和耗性能的,需要经过TCP的三次挥手和四次握手,如果对于同一个请求地址能省去这个过程,对服务性能将是极大的提升。
为了解决上面这个问题,http1.1中增加了kepp-alive来保证我们每次http请求的时候,不用重新建立连接。为了提升系统的性能,我们采用池化技术。对象池通过复用对象来减少的创建、垃圾回收的开销。连接池通过复用TCP的连接来减少创建和释放连接的时间。线程池通过复用线程来提高系统的并发能力。
连接池一般对外提供获得连接、归还连接的接口给客户端使用,并暴露最小空闲连接数、最大连接数等可配置参数,在内部则实现连接建立、连接心跳保 ...
Zookeeper客户端Curator的事件监听详解
0x00 Curator 事件监听
Curator 事件有两种模式,一种是标准的观察模式,一种是缓存监听模式。标准的监听模式是使用Watcher监听器。缓存监听模式引入了一种本地缓存视图的Cache机制,来实现对Zookeeper服务端事件监听。
Cache事件监听可以理解为一个本地缓存视图与远程Zookeeper视图的对比过程。Cache提供了反复注册的功能。Cache是一种缓存机制,可以借助Cache实现监听。简单来说,Cache在客户端缓存了znode的各种状态,当感知到zk集群的znode状态变化,会触发event事件,注册的监听器会处理这些事件。
Watcher监听器比较简单,只有一种。Cache 事件监听的种类有3种Path Cache,Node Cache,Tree Cache。
0x01 Watcher 标准的事件处理器
在ZooKeeper中,接口类Watcher用于表示一个标准的事件处理器,其定义了事件通知相关的逻辑,包含KeeperState和EventType两个枚举类,分别代表了通知状态和事件类型。
Watcher接口定义了事件的回调方法:process(Wa ...
Springboot应用打包和部署脚本
除了常规的CICD打包部署,有时候不得不自己写脚本打包部署应用,这两个脚本作为记录,避免后续需要时候重复编写shell脚本,浪费时间。
打包
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485#!/bin/bash -xAPP_NAME=demoCODE_BASE=$(cd "$(dirname "$0")";pwd)TEMP_DIR=./targetTAR_NAME=${APP_NAME}.tar.gzJAR_NAME=${APP_NAME}.jarclean(){ if [[ -d $TEMP_DIR ]]; then echo "[$(color 'blue' ...
Zookeeper Curator处理会话过期Session Expired
什么是zookeeper的会话过期?
一般来说,我们使用zookeeper是集群形式,如下图,client和zookeeper集群(3个实例)建立一个会话session。
在这个会话session当中,client其实是随机与其中一个zk provider建立的链接,并且互发心跳heartbeat。zk集群负责管理这个session,并且在所有的provider上维护这个session的信息,包括这个session中定义的临时数据和监视点watcher。
如果再网络不佳或者zk集群中某一台provider挂掉的情况下,有可能出现connection loss的情况,例如client和zk provider1连接断开,这时候client不需要任何的操作(zookeeper api已经给我们做好了),只需要等待client与其他provider重新连接即可。这个过程可能导致两个结果:
在session timeout之内连接成功
这个时候client成功切换到连接另一个provider例如是provider2,由于zk在所有的provider上同步了session相关的数据,此时可以认为 ...
Zookeeper注册节点断掉后自动重新注册
熟悉的配方——dubbo注册原理
了解Zookeeper注册节点的之前,我们先看看我们熟悉的dubbo是如何利用Zookeeper做服务的注册和订阅的。
在dubbo的整体架构设计中,注册中心的节点结构示意图如图1。图中各个圆代表一个节点path。
/dubbo:这是Dubbo在Zookeeper上创建的根节点。
/dubbo/com.foo.barService:这是服务节点,代表了Dubbo的一个服务。
/dubbo/com.foo.barService/providers:这是服务提供者的根节点,其子节点代表了每一个服务的真正提供者。
/dubbo/com.foo.barService/consumers:这是服务消费者的根节点,其子节点代表了每一个服务的真正消费者。
/dubbo/com.foo.barService/providers/192.168.6.148:这是服务真正的提供者。
服务提供者
服务提供者在服务初始化的时候,首先会在Zookeeper的/dubbo/com.foo.barService/providers节点下创建一个子节点,并写入自己的URL地址, ...
详解java应用gc日志信息
大概是这样的
写这篇文章的意图是由于线上服务出现了接口调用超时的问题。该服务在架构中处于业务网关,主要处理图文等业务的转发能力。从监控大盘中,可以看到服务器的GC相当频繁,接口超时的情况同GC的波动也在波动曲线中几乎也保持相同。按道理,仅仅是服务转发,不应该有很频繁的GC。服务器的配置为4C8G,单台服务的QPS差不多400左右。
排查此类问题可以通过开启G1垃圾收集器的跟踪和诊断开关获取GC日志,通过PrintGCDetails可以获取最详细的GC日志。 我们也可以通过开启UnlockDiagnositcVMOptions和G1PrintRegionLivenessInfo参数,可以在标记周期最后打印每个分区(Region)的占用情况和存活对象占用空间,G1PrintHeapRegions可以打印分区的分配和回收信息。
G1 GC是一个响应时间优先的GC算法,它与CMS最大的不同是,用户可以设定整个GC过程的期望停顿时间,参数-XX:MaxGCPauseMillis指定一个G1收集过程目标停顿时间,默认值200ms,不过它不是硬性条件,只是期望值。那么G1怎么满足用户的期望呢?就需要 ...