自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 资源 (2)
  • 收藏
  • 关注

原创 聊聊系统架构之负载均衡优化实践

最近在进行线上监控检查时,我遇到了两个超出预期的案例。首先,网关层的监控数据与应用实际监控数据存在不一致性,尤其是max有较大的差异,详见如下图。其次在某个应用中,通过httpclient请求某域名时发现只有一台机器持续出现"Read timed out"的异常错误。鉴于这种情况,我分析了客户端请求到应用集群之间的完整链路。

2024-06-18 23:04:59 1546 3

原创 聊聊限流的一些事儿

最近几年,随着微服务的流行,服务与服务之间依赖越来越强,调用也越来越复杂,服务间的稳定性变突显出来。特别是在遇到突发请求时,常常需要通过缓存、限流、熔断降级、负载均衡等多种方式保证服务的稳定性。其中限流是不可或缺的一环。一般每一个对外提供的接口都需要做流量控制,这与保险丝的原理一样。当接口的流量请求超过核定值时就得对请求进行引流或者直接拒绝等操作。特别是在系统应对大流量,高并发的访问时,限流算法可以很好地控制流量,从而避免系统负载过高而崩溃。

2024-06-03 20:59:35 657 1

原创 如何从消失的异常堆栈定位线上问题

然后搜索日志发现大量的Caused by: java.lang.NullPointerException,没有详细的异常堆栈,很显然是由于fast throw导致的,然后不断向前追溯相同的日志来定位问题如下图。可以看出,如果某个异常在同一位置被抛出多次,会被JIT C2优化成空异常,例如本文的NullPointerException,既没有message,也没有堆栈.但他的速度非常快,不用分配内存和获取堆栈.一般是由于链路的服务器或端口无法访问,对于虚拟机或者docker,还需要考虑宿主机的问题。

2023-06-05 09:43:48 592

原创 断网演练中遇到的问题及总结

对于核心接口,接口稳定性非常重要,涉及到系统的架构分布式设计、缓存体系、异步处理、数据库设计、降级限流策略等方方面面。我们聚集一下,对于本次遇到问题的跟源,在于断网演练开始阶段,由于jsf接口部署的数据中心网络不通,jsf接口不可用,引起jsf接口连接超时,然而jsf本身的worker心跳检测是通过worker实现的,需要一定的时间周期,最终直接影响jsf接口的性能。下面给一张jsf注册中心的基础架构图。那么,面对此类问题如何解决呢?

2023-03-27 14:51:52 543

原创 数据迁移——技术选型

数据库技术选型

2023-02-14 09:46:41 1397

原创 spring5支持velocity

spring5支持velocity

2022-08-25 14:19:49 725

原创 Clickhouse分布式表式对本地表的对比

clickhouse本地表与分布式表的数据写入

2022-08-05 10:29:27 2703

原创 聊聊军演压测中热key导致Redis实例CPU100%的问题

在Redis集群中,热key指得是那些在某一段时间内访问特别高的键值。热key的问题在于,大量访问流量集中到某一个Redis实例中,达到单个实例处理上限,可能会导致该实例CPU使用率100%,或者网卡流量达到上限等,对集群以及应用系统的稳定性和可用性造成影响,更为严重出现服务器宕机。可造成的影响1、热key会导致流量集中,redis缓存与数据库被击穿,从而引发系统雪崩(大量请求失败,直接访问数据库等)。2、请求分配不均,存在热key的节点面临较大的访问压力,可能导致该数据分片的...

2022-05-18 16:20:19 852

原创 一个默认cookie处理器引发的问题

最近对系统进行jdk升级的过程中,其中一个预发环境在设置顶层域名cookie时出现了如下的错误,这里tomcat版本为:8.5.42, jdk版本为1.8.0u192。java.lang.IllegalArgumentException: An invalid domain [.XXXX] was specified for this cookieat org.apache.tomcat.util.http.Rfc6265CookieProcessor.validateDomain(...

2022-04-20 18:35:00 883

原创 ETCD Client 的endPoint生命周期管理

最近,我司在进行某机房的断网演练,我在使用etcd中间件时,发现了一个平时不太关注的问题——ETCD client的生命周期。即ETCD集群中涉及到节点切换,或者机器宕机或者断网的情况下,ETCD Client无法快速重连到可用的ETCD节点,导致client端不可用。当然,上面的问题可以通过临时创建一个新的ETCD clinet或重启操作,但每次遇到断网错误或者断网时间较长,那么这段时间内所有的请求都要重新创建一个新的ETCD client来重启吗?频繁创建甚至重启ET...

2022-03-28 12:44:31 2619

原创 ignite集群的启动

ignite缓存模式 Ignite提供了三种不同的缓存操作模式:PARTITIONED(分区)、REPLICATED(复制)、LOCAL(本地)。缓存模型可以整个集群配置,也可以细粒度到每个缓存上。 PARTITIONED:这是扩展性最好的分布式缓存模式,在这种械下,所有数据被均等地分布在分区中,所有的分区也被均等地拆分到相关的节点中。这个方式可以在所有节点上只要匹配总可用存储(内存和磁盘)就可以存储尽可能多的数据,只要有足够多的节点,就可以存储足够多的...

2022-03-11 12:41:09 3819

原创 表象:zookeeper因内存使用率导致的集群不可用

线上突然告警,zk集群不可用。随机看了zk节点挂了前的的机器的CPU与内存,内存100%,如下图所示。 首先我看了日志,由于线上配置的问题,所有的日志全部扔掉了。基于日志没有发现有价值的内容,接着又看了节点的网络,TCP连接数,磁盘IO,线程数,这些都是在正常范围内。 接着想着尝试启动一个节点,启动成功。但是通过top命令查看zk线程CPU利用率在30%左右,在正常情况下zk一般不耗内存(除非异常了)。下面是最耗CPU的堆栈信...

2021-08-11 18:01:32 1377

转载 MySQL中的Buffer Pool-支撑高并发的一些设计

1、Buffer Pool 概述Buffer Pool 是什么?从字面上看是缓存池的意思,没错,它其实也就是缓存池的意思。它是 MySQL 当中至关重要的一个组件,可以这么说,MySQL的所有的增删改的操作都是在 Buffer Pool 中执行的。但是数据不是在磁盘中的吗?怎么会和缓存池又有什么关系呢?那是因为如果 MySQL的操作都在磁盘中进行,那很显然效率是很低的,效率为什么低?因为数据库要从磁盘中拿数据啊,那肯定就需要IO啊,并且数据库并不知道它将要查找的数据是磁盘的哪个位置,所以这就需...

2021-07-27 15:17:39 397

原创 C2 CompilerThread11引起的CPU较高分析

目录1、问题描述2、问题解决过程1、问题描述 在日常巡检时发现,线上部分服务器的性能会出现波动,tp等指标出现飙升。经过一系列的排查,最终发现是由于C2编译线程长时间运间消耗了CPU. 异常的堆栈信息如下:"C2 CompilerThread11" #17 daemon prio=9 os_prio=0 tid=0x00007fdd8c6fc800 nid=0x133 waiting on condition [0x0000000000000000] ...

2021-03-09 21:23:41 4197 1

原创 一种简单通用的重复提交解决方案

对于重复提交,想到的最简单的方案就是该方法保证幂等性,所谓幂等性就是F(F(x))=F(x)多次运算结果都是一致的。比如对于innodb存储引擎,RR级别以上的select查询就天然具有幂等性。 首先重复提交的原因有许多,比如恶意的重复提交,网络重发,,分布式RPC的try重发,nginx重发等情况等等。 下面给一个网络重发的案例。10.175.55.64118.178.88.205 - - [24/Feb/2021:18:12:37 +0800] "118.17...

2021-03-01 17:53:31 503

转载 Docker——JVM感知容器的CPU和Memory 资源限制

最近在性能优化中,发现Parallel GC Threads的数量为43,Parallel CMS Threads的数量为11。 应用部署在docker上,配置如下: docker容器为4c8g, gc为CMS。 默认情况下ParallelGCThreads = (ncpus <= 8) ? ncpus : 3 + ((ncpus * 5) / 8),其中ncpus是机器的核数,ParallelCMSThreads=(Parallel...

2021-02-24 09:54:16 2387

原创 分布式事务框架Seata

Seata(Simple Extensible Autonomous Transaction Architecture):集高性级与易用性的一种分布式事务微服务架构,其前身是 fescar,github地址:https://github.com/seata/seata。Seata有3个基本组件:事务协调器(TC):维护全局事务和分支事务的状态,驱动全局提交或回滚。 事务管理器TM:定义全局事务的范围:开始全局事务,提交或回滚全局事务。 资源管理器(RM):管理分支事务正在处理的资源,与TC进行对

2021-01-26 20:47:21 965 1

原创 一个普通的死锁案例

目录1、死锁日志2、重现与分析1、死锁日志------------------------LATEST DETECTED DEADLOCK------------------------200526 17:49:17*** (1) TRANSACTION:TRANSACTION 7892ECEC4, ACTIVE 50 sec inserting ## 事务ID=7892ECEC4,活跃了50s mysql t

2021-01-09 17:27:35 450 1

原创 数据库读写分离下的数据同步解决方案

目录1、读写分离解决了什么问题2、读写分离与业务的架构3、实际案例4、解决方案1、读写分离解决了什么问题 读写分离其实将数据库分离一个主库,多个从库,主从库之前通过某种机制(如binlog)进行数据同步,这是一种常见的数据库架构。在大多数互联网业种中,都是读多写少的业务,为了能够线性提升数据库的读性能,消除读写冲突并提升写的性能,一般可以采用读写分离的思想(当然还有其他解决方案:如复本集,缓存策略等等)。其实,用一句话来概括,读写分离基本原理就是将数据库的读写操作路由到不...

2021-01-09 14:26:26 3288

原创 分布式一致性算法介绍

分布式数据一致性简单点理解就是在多个节点中同一时间视图时数据值是一致的。大体上可以将这些算法分为强一致性与弱一致性。强一致性 raft(该协议是实现etcd高可靠的基础,大名鼎鼎的k8s就使用了etcd保存集群中所有的网络配制和对象的状态信息) zab协议(zk基于该协议实现了主备模式的系统架构) paxos 弱一致性 gossip协议(这个应用在redis集群中) 下面对上述算法进行简要的...

2021-01-07 21:29:27 2180

原创 Jeremy Cole大神关于Innodb的文章分享

这是关于Innodb的经典博客,特友情分享,原博客地址:https://blog.jcole.us/innodb/

2021-01-06 10:08:09 545

原创 高并发的写操作如何对数据库释压

目录1、背景1、背景 目前,**东商家有28W+,为了尽可能的更新上架新商品,这些商家会进行及时的频繁页面操作。经统计,在所有的页面操作中,定时发布(立即发布)是深受商家喜爱的经典操作,特别是大促一结束,商家会进行高并发的发布操作,如在2020.11.12的0点,大量的商家开始下架活动页面,QPS高达2W。2、面临的问题3、解决之道...

2021-01-05 21:12:08 2739 12

原创 ToolBar

<br /> <br />if (!m_wndToolBar.CreateEx(AfxGetMainWnd(), TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP<br />  | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC))// ||<br />  //!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))<br /> {<br />  TRACE0("

2011-05-30 14:51:00 760

原创 添加快捷菜单C++

<br />在视图View中添加<br />void CView1::OnRButtonDown(UINT nFlags, CPoint point)<br />{<br /> // TODO: 在此添加消息处理程序代码和/或调用默认值<br /> CMenu menu;<br /> menu.CreatePopupMenu();<br /> int i=0;<br /> menu.AppendMenu(0,ID_PAUSE,_T("暂停下载"));<br /> menu.AppendMenu(0,ID_R

2011-05-27 14:30:00 781

原创 读取文件夹或者文件中的内容

<br />CString get_path()//获取当前程序工作的目录<br />{<br /> TCHAR szFilePath[MAX_PATH];<br /> DWORD dwFLen=::GetModuleFileName(_AtlBaseModule.GetModuleInstance(),szFilePath,MAX_PATH);<br />//其中_AtlBaseModule.GetModuleInstance()可以为null<br /> CString sPath=szFilePath

2011-05-27 14:08:00 533

原创 分页技术:

<br />分页技术:<br />需要用到四个变量,它们有各自的用处:<br />Int pageSize: 每页显示多少条记录<br />Int pageNow:希望显示每几页<br />Int pageCount: 一共有多少页<br />Int rowCount: 一共有多少条记录<br />说明:<br />pageSize 是指定的pageNew用户选择的;   rowCount是从表中查询得到的;  <br />if(rowCount%pageSize==0)<br />pageCount=ro

2011-05-20 01:17:00 387

原创 session与中文编码

<br />session<br />1. 当用户打开浏览器,访问某个网站时,服务器就会在服务器的内存为该浏览器分配一个空间,该空间被这个浏览器独占。<br />2.得到session<br />  servlet:HttpSession hs=request.getSession();<br />  jsp:   session是一个内置对象,可以直接使用<br /> <br />向session添加属性<br />servlet: hs.setAttribute(String name,Object o

2011-05-20 00:21:00 1658

原创 struts2中的一些问题

<br />对于jsp中使用<s:iterator value="list"><br />1.java bean的构造函数<br />2. 查询sql使用select new users(o.id) from users o where o.id=---<br />3.

2011-05-19 00:41:00 342

原创 Boost.asio

<br />Boost.Asio是利用当代C++的先进方法,跨平台,异步I/O模型的C++网络库 <br />现在完成了的小节<br /><br />   1. 网络库:VC2005注意<br />   2. 同步Timer<br />   3. 异步Timer<br />   4. 回调函数的参数<br />   5. 成员函数作为回调函数<br />   6. 多线程回调同步<br /><br /><br />文章见<br />http://wiki.woodpecker.org.cn/moin/Boo

2011-05-16 16:33:00 455

转载 [转载] BitTorrent协议规范

<br />BitTorrent 协议规范(BT协议集合)一 <br />BitTorrent 是一种分发文件的协议。它通过URL来识别内容,并且可以无缝的和web进行交互。它基于HTTP协议,它的优势是:如果有多个下载者并发的下载同一个文件,那么,每个下载者也同时为其它下载者上传文件,这样,文件源可以支持大量的用户进行下载,而只带来适当的负载的增长。(译注:因为大量的负载被均衡到整个系统中,所以提供源文件的机器的负载只有少量增长) <br /><br />一个BT文件分布系统由下列实体组成: <br />

2011-05-16 15:38:00 3822 1

转载 [转载] BitTorrent协议规范

<br />BitTorrent 协议规范(BT协议集合)一 <br />BitTorrent 是一种分发文件的协议。它通过URL来识别内容,并且可以无缝的和web进行交互。它基于HTTP协议,它的优势是:如果有多个下载者并发的下载同一个文件,那么,每个下载者也同时为其它下载者上传文件,这样,文件源可以支持大量的用户进行下载,而只带来适当的负载的增长。(译注:因为大量的负载被均衡到整个系统中,所以提供源文件的机器的负载只有少量增长) <br /><br />一个BT文件分布系统由下列实体组成: <br />

2011-05-16 15:05:00 2635

原创 C++ _T

<br />CString和const char*的转化<br />将项目->属性->常规->字符集:设置为使用多字节字符集。

2011-04-30 08:41:00 442

原创 INI文件编程

<br />WINAPI函数WritePrivateProfileString,GetPrivateProfileString<br />1.       将信息写入.ini文件中<br />所用的WINAPI函数原型为:<br />BOOL WritePrivateProfileString(<br />           LPCTSTR  lpAppName,<br />           LPCTSTR  lpKeyName,<br />           LPCTSTR  lpString,<

2011-04-27 23:17:00 383

原创 JS 关闭与刷新?

<br />关闭与刷新这是一个问题。<br /> <br /><script type="text/javascript"><br />function  close()<br />{<br />   var n = window.event.screenX - window.screenLeft;        <br />     var b = n > document.documentElement.scrollWidth-20;        <br />                if(b

2010-12-08 12:26:00 454

A Concept-Driven Algorithm for clustering Search Results

该文档详细地介绍了Lingo聚类算法,阐述了其中后缀数组、奇异值分解、向量空间模型等思想理论。

2012-04-11

boost资料总结 编程

自己根据平时总结的关于boost编程的一些资料

2011-04-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除