其他技术
文章平均质量分 60
ChainCode
这个作者很懒,什么都没留下…
展开
-
spring cloud 架构调优
项目中使用到spring cloud,前端使用vuex框架,PC网页版。在测试环境中发现,每个post或者get的请求之前都有同一样一个Preflight的请求。查看了Preflight请求的request method是option。Preflight request就要需要解释一下了,当一个资源从与该资源本身所在的服务器不同的域或端口请求一个资源时,资源会发起一个跨域 HTTP 请求。出于安全原因,浏览器限制从脚本内发起的跨源HTTP请求。 例如,XMLHttpRequest和Fe.原创 2021-08-12 17:04:09 · 262 阅读 · 0 评论 -
产业区块链,技术赋能产业
产业产业是指由利益相互联系的、具有不同分工的、由各个相关行业所组成的业态总称,尽管它们的经营方式、经营形态、企业模式和流通环节有所不同,但是,它们的经营对象和经营范围是围绕着共同产品而展开的,并且可以在构成业态的各个行业内部完成各自的循环。产业是社会分工和生产力不断发展的产物。产业是社会分工的产物,它随着社会分工的产生而产生,并随着社会分工的发展而发展。产业互联网产业互联网是...原创 2019-11-20 14:43:56 · 565 阅读 · 0 评论 -
ExecutorService的OOM坑
Executors创建的ExecutorService并不能设置控制消息队列的长列,默认长度是2^31,当线程处理速度较慢且并发任务太多时,任务队列的任务将不断堆积,就可能引起OOM。因此建议直接原创 2016-12-26 14:41:04 · 3521 阅读 · 0 评论 -
故障定位及性能调优
接到某服务端团队的报障,他们的A服务调用我们负责的B服务在12点左右出现较多的超时情况,A服务设置的超时时间为3秒,当B服务处理时长超过3秒时,A服务就视为超时。经查看B服务的处理时长统计图如下,在12点左右出现较多的超过3000毫秒的情况。观察机器的性能图,在11点55分负载比较高。一分钟内的load average达到27.82,已经大于cpu的核数24.L原创 2017-02-06 18:16:46 · 1047 阅读 · 1 评论 -
websocket之旅
一次偶然的机会在群里有人提问到这样的问题,一台socket通信服务器,用其他客户端联接正常,用websocket就不行。于是自己写了个程序验证一下,也就开始了websocket 的hello word之旅。先了解下websocket的通信原理。 这里简单说明一下WebSocket握手的过程。当Web应用程序调用new WebSocket(url)接口时,Browser就开始原创 2017-02-08 14:11:11 · 1279 阅读 · 0 评论 -
基于springside4 的app token登录鉴权
很多公司app客户端和服务端通讯是基于socket自定义私有协议,但对于创业型公司和需要快速搭建app原型的公司,http通讯是比较好的选择,开发效率高,http协议会比socket协议通信慢,且容易被刷协议和截取数据包。那么基于http协议的通信,登录和鉴权是比较重要的环节。最近在研究springside4,shiro,基于这些框架搭建了一套app http登录和鉴权。下图先介绍整个逻辑流程原创 2017-02-22 17:41:23 · 4484 阅读 · 0 评论 -
通过redis选主进程
选主进程的方式有很多,完善点的方案就是zookeeper来做。这里介绍的是一种基于redis选主的方案,快速开发,快速实现。Springside4里有个MasterElector类,细读代码后整理出自己的总结如下。1. 业务进程启动时生成hostId,hostId的规则是“主机名-随机数”,一台主机部署多个进程实例的情况,也可以改为“主机名-端口”。2. 业务进程调原创 2017-02-23 17:15:56 · 3961 阅读 · 0 评论 -
堆外内存DirectByteBuffer剖析
操作系统中除了jvm申请的内存外,还有一块jvm以外的内存,这块内存空间一船是连续的,DirectByteBuffer对象是在jvm申请和创建的,内容是在堆外内存存放的的,DirectByteBuffer保存申请堆外内存时的起始偏移地址和堆外内存申请的容量。java.nio.DirectByteBuffer源码包含了这些类:Bits:记录申请堆外内存的大小及创建Unsafe对象Un原创 2017-04-06 12:29:02 · 2979 阅读 · 1 评论 -
jvm堆外直接内存实现高性能接入层
接入层接受app的请求,解包数据重新封装数据包,把app数据包做为包体,同时再加上接入层的包头数据,根据app数据包头的协议号转发到后端业务服务器。所有app端的请求都先经过接入层,因此接入层的性能是至关重要。 为了性能上的保证,使用到netty的PooledDirectByteBuf,顾名思义就是池化的堆外直接内存,堆外直接内存就是jvm堆以外申请的内存,这里为什么考虑用原创 2017-04-04 11:44:12 · 3839 阅读 · 1 评论 -
接入层高性能缓存技术nginx+redis利器
一. OpenRestyOpenResty是一个基于 Nginx与 Lua的高性能 Web平台,其内部集成了大量精良的 Lua库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态Web 应用、Web 服务和动态网关。接入层缓存技术就是使用OpenResty的技术用Lua语言进行二次开发。二.Nginx +redis 下图左边是常用的原创 2018-01-24 18:46:44 · 15909 阅读 · 10 评论 -
MYSQL AUTO_INCREMENT奇技淫巧
产品提了新需求,被删除掉的回贴不显示,删除后,每个帖子的楼层数保持不变,帖子A是第二个回贴,帖子B是第三个回贴,删除掉A后,A不出现在回帖列表,但是B的楼层数还是显示3。于是需要记录下每个回贴的楼层数,在回帖表里增加字段记录楼层。原来的表结构是CREATE TABLE `comment` ( `id` bigint(20) NOT NULL, 评论的帖子ID `artic原创 2018-01-29 17:45:59 · 2175 阅读 · 1 评论 -
手机端和wap端页面的自适应技术方案
网站aaa.xxx.com是有wap和pc两种页面,同一个url请求,nginx根据客户端的user-agent返回不同的适配页面,如下图:但是遇到一种情况,某m.xxx.com里有个入口跳转到我们的网站aaa.xxx.com首页,m.xxx.com无论是pc访问还是手机访问都是显示wap页样式,这就要求在m.xxx.com上跳到aaa.xxx.com首页也要显示wap页样式(如下图1),aaa....原创 2018-03-07 17:33:39 · 5332 阅读 · 1 评论 -
抄底dubbo底层的数据包格式
先来看看一段dubbo调用代码: ProviderdemoService= (Provider) context.getBean("demoService1"); Test t=new Test(); t.s="hello world"; t.n=1111; t.l=2222222222l; String message = demoService.buil...原创 2018-02-22 16:44:13 · 2609 阅读 · 0 评论 -
前后端配合干活的姿势
根据以往的工作经验,先总结出前端在项目中的角色和职责,大体分为两类:一.设计HTML页面前端根据UI设计师交付的设计图,转化成静态的html页面,后端开发拿到html页面,转化成动态的后台模板(jsp,velocity,freemark等等),并且加上ajax代码进行异步处理。在我任职过的其中一家公司就是用这种模式,背景是前后端人员比例1:8,前端无法腾出更多的精力参与更多工作。一个项目的工作量不...原创 2018-02-23 12:13:01 · 1684 阅读 · 0 评论 -
也来谈谈自己做为面试官的面试流程
1、请对方做个简短的自我介绍主要考察面试者的表达能力,同时也为自己争取点时间看下简历2、对简历中的疑问点提问进一步求证,获取到准确信息,同时也考察简历的真实性。比如有些简历中毕业五年,但只写了三年的项目经验,发现是前面两年不是做IT方面的工作,面试者没有补充上来,因此IT行业经验只能算三年。3、请面试者介绍一个体现自己能力的项目考察面试者的项目经验和技术水平,同时提出高可用性、高并发的设计问题,开...原创 2018-02-23 16:14:23 · 13302 阅读 · 1 评论 -
云中取物--app端的日志采集系统
手机app用户报障通常有几个渠道:1、通过手机app上的问题反馈,填写相关问题。2、是在渠道市场评论3、公司同事报障或者用户通过同事反馈。 问题定位的姿势如下:1. 在界面还原用户操作,试图重现2. 根据用户uid号分析后台日志或者查询数据3. 分析客户端日志 本文重点阐述第3点,要分析客户端日志,就得先收集日志,需要在用户反馈界面提原创 2016-12-21 11:27:38 · 4978 阅读 · 2 评论 -
秒杀后台系统设计
网上有很多介绍秒杀系统架构文章,写得不错,包括前后端的实现,这里只从后台服务系统架构阐述。打开页面时查询商品数量和点击抢购按钮提交校验时都是从本地web进程内缓存读取,这里没有使用redis,是考虑到redis号称单机qps最大10w/s,用户端可能会使用些作弊器产生的qps大于10w/s,所以通过web进程内缓存实现,web进程可以通过nginx做平行扩容。单个web应用可支持的原创 2016-10-20 18:07:39 · 4194 阅读 · 0 评论 -
微服务异步化架构
微服务中的逻辑复杂处理时间长的情况,在高并发量下,导致服务线程消耗尽,不能再创建线程处理请求。对这种情况的优化,除了在程序上不断调优(数据库调优,算法调优,缓存等等),可以考虑在架构上做些调整,先返回结果给客户端,让用户可以继续使用客户端的其他操作,再把服务端的复杂逻辑处理模块做异步化处理。这种异步化处理的方式适合于客户端对处理结果不敏感不要求实时的情况,比如群发邮件、群发消息等。下面介绍三种原创 2016-10-19 18:17:17 · 3367 阅读 · 1 评论 -
DirectByteBuffer内存申请与释放
DirectByteBuffer类是在Java Heap外分配内存,对堆外内存的申请主要是通过成员变量unsafe来操作,下面介绍构造方法 // Primary constructor // DirectByteBuffer(int cap) { // package-private super(-原创 2015-12-15 16:39:37 · 6358 阅读 · 0 评论 -
怪异的JAVA对象属性存储
public class TestBean {public int intPro;public String strPro;public int intExtend;public String strExtend;}/*** @param args* @throws Exception*/public static void main(String[] ar原创 2016-05-06 10:53:56 · 368 阅读 · 0 评论 -
Nginx防攻击杀手锏
1.限制IP访问频率:HttpLimitZoneModule 限制并发连接数实例limit_zone只能定义在http作用域,limit_conn可以定义在http server location作用域 #定义一个名为allips的limit_req_zone用来存储session,大小是10M内存, #以$binary_remote_addr为key,限制平均每秒原创 2016-05-23 15:11:41 · 636 阅读 · 0 评论 -
大型互联网网站的告警系统及策略
1. web服务进程的监控监控web服务器上的web进程是否存活,内存,cpu,网卡数据上报到监控服务器2. web服务依赖的业务逻辑服务的监控Web服务调用业务逻辑服务成功和失败都上报到监控服务器,设置监控阀值,低于阀值告警。对于重要服务,在监控服务器设置请求次数监控,某段时间内web服务器没有上报数据到监控服务器,进行告警.3. 用户到web服原创 2016-06-06 11:55:57 · 2661 阅读 · 0 评论 -
做到这些,你也能成为一名优秀的程序员(转)
做到这些,你也能成为一名优秀的程序员1、迷恋技术,保持对代码的热情兴趣是最好的老师,如果不是最初对编程充满兴趣,应该很少有人会选择程序员这个行业,但同时程序员是一个有点乏味枯燥的工作。如果你不迷恋技术,对代码充满热情,那你只能做一个平淡的程序员。2、在实践中成长,磨砺技术程序员是一个在实践中成长的职业。你看再多书,听再多的视频课,自以为学到很多东西,但正在接触项目的时候,就两手发软转载 2016-07-14 12:53:24 · 728 阅读 · 0 评论 -
AbstractReferenceCountedByteBuf 引用计数
顾名思义,引用计数bytebuf基类。在介绍这个类之前,先介绍几个点预热一下。AtomicIntegerFieldUpdater 整型字段的更新器,保证更新integer字段原子性操作CAS :compareAndSet,获取当前变量的值,根据变量计算出一个新值,如果这时变量的值没有变化,就用新值更新变量,如果有变化则不更新。伪代码:for(;;;){原创 2015-12-16 10:19:21 · 516 阅读 · 0 评论 -
微信、陌陌等著名IM软件设计架构详解
对微信、陌陌等进行了分析,发出来分享一下(时间有些久了)电量:对于移动设备最大的瓶颈就是电量了。因为用户不可能随时携带电源,充电宝。所以必须考虑到电量问题。那就要检查我们工程是不是有后台运行,心跳包发送时间是不是合理。流量:对于好多国内大部分屌丝用户来说可能还是包月30M,那么我们必须站在广大用户角度来考虑问题了。一个包可以解决的就一个包。网络:这个也是转载 2016-07-19 13:02:54 · 8266 阅读 · 0 评论 -
千万级的请求、微秒级的微服务
某个大型互联网系统中,产品经理提了一个需求,需要上线一个新功能点,运营人员在运营系统中配置哪些用户具有这个新功能,不在配置名单里的用户不具备这个功能,名单的数量约为几千个。运营系统是web系统,部署在南方c城市的web机房用户端是pc客户端软件,日均DAU几百万,每秒TPS十几万,客户端和后台服务进程是通过socket通信,后台服务进程部署在南方和北方各一个机房。 运营系统和数据库原创 2016-07-14 11:28:53 · 3575 阅读 · 6 评论 -
可靠性99.999%互联网微服务的架构设计
这个微服务是某大型app一个重要的微服务,并发量峰值是5000/秒,微服务的信息需要调用外部业务服务器获取信息,且要调用四个外部业务器的接口四次才能返回完整的信息。 第一个版本:由于业务服务器不是我们负责的,对方的研发人员基于一些原因,不愿意提供一个完整信息的接口给我们,因此需要通过四次远程调用接口才能获取到完整信息,可靠性和性能大大打拍。 为了提供可靠性和性能,增原创 2016-07-28 16:31:33 · 3041 阅读 · 0 评论 -
视频直播技术的基本概念入门
本文章只介绍视频转码,上图也省略音频部分,主播用手机开播,通过摄像头采集数据,编码上传到服务端,服务端解码还原数据,再进行转码成各样视频流,再编码给观看端。这里介绍几个概念:编码:指通过特定的压缩技术,将某个视频格式的文件转换成另一种视频格式文件的方式,由于原始视频数据比较大,经过压缩后更快在网络传输。解码:解压经过压缩的数据,还原成原始的视频数据转码:将已经压缩编码的视频码流转换原创 2016-10-11 17:09:17 · 1640 阅读 · 0 评论 -
直播平台录播系统架构
很多直播平台,会录制一些大主播的内容或者精彩内容,提供回放给用户观看。音视频的录制是在云端合成录制成个文件,有比较成熟的技术支持。技术的复杂性在于录制弹幕,礼物特效,进出场人数等流水。在直播时,弹幕、礼物特效、观看人数的变化都是通过广播消息包推送到客户端,流水录制服务器以摸拟客户端的方式接收广播消息包存放在数据库,数据库中需要保存消息的时间戳和广播包的内容。流水录制服务器同时也去拉取直播时的礼原创 2016-10-12 11:41:26 · 3941 阅读 · 0 评论 -
微服务性能优化-日志调优
A进程是提供接口给手机客户端调用,B进程是刚上的服务,A进程调用B进程的超时时间设置为3秒,超过3秒就报错,上报到监控系统。上线后收到短信告警,超时的请求量较多。查看监控图如下纵座标的顶部是3秒,每隔一小时就有一个高峰达到3秒。刚开始怀疑B进程有定时任务在跑,查看代码后发现没有,最后查到运维人员在系统中跑定时任务,每小时检查log目录下的文件是否大于500M,是的话就切割文件压缩。文件原创 2016-10-13 17:24:45 · 4410 阅读 · 0 评论 -
图解DDos
分布式拒绝服务(DDoS:Distributed Denial of Service)攻击指借助于客户/服务器技术,用分布在网络的大量机器同时向服务器发起攻击,具体的攻击手段有下面四种:1. SYN Flood攻击先解释tcp三次握手的过程Linux或者unix系统会对“未完成连接队列”和“已完成连接队列”有个总量限制,如果大量客户端同时发起连接,超过队列容量的会原创 2016-09-28 15:40:35 · 543 阅读 · 0 评论 -
要把直播系统做好有多复杂?
CSDN有个直播知识库,有个网址http://lib.csdn.net/base/liveplay/structure详细介绍了直播的知识点,由于原图像蜘蛛网,不易查看,对原图进行分类截图,如下:原创 2016-10-14 11:37:34 · 1091 阅读 · 0 评论 -
netty四种BUFFER的内存测试
分别使用下面四种buffer测试ByteBufoutBuf=UnpooledByteBufAllocator.DEFAULT.heapBuffer();//ByteBufoutBuf=PooledByteBufAllocator.DEFAULT.heapBuffer();//ByteBufoutBuf=PooledByteBufAllocator.DEFAULT.buffer();原创 2016-04-27 11:04:45 · 8084 阅读 · 0 评论