沈歌的博客

不甘平庸的心

Java开发团队管理细则

Java development team management rules

软件开发是团队协作,多人开发很容易造成协调问题,因此,做一些必要的开发规范,有助于帮助新员工成长,也有助于提高开发效率,防止各种问题影响开发进度。 1. 代码规范 建议每位java开发人员都读一下《阿里巴巴Java开发手册》 阿里作为中国最大规模使用Java的公司,也是Java技术实力最强的公司。这个手册在业界影响很大,已经成为了很多团队的开发标准,更加方便的是,开发了Intel...

Mysql数据库死锁分析相关概念

mysql deadlock

参考博客: mysql死锁问题分析(https://www.cnblogs.com/LBSer/p/5183300.html) mysql insert锁机制(http://yeshaoting.cn/article/database/mysql%20insert%E9%94%81%E6%9C%BA%E5%88%B6/) 这是全网找到的比较好的两篇博客。 行锁: InnoDB有三种...

mac下的抓包工具:Charles4

mac-tool-charles4

Charles是一款运行在你自己计算机上的web代理工具,可以有效地获取http通信信息,主要用于网页的开发和调试等。 安装 以下为来自史蒂芬周的博客的Charles 4.0 Mac破解版 下载地址:Charles 4.0 Mac 破解版下载 密码:6jp3 Charles的破解方法: 打开dmg镜像,将”Charles.app”拖入应用程序中; 打开应用程序——...

(转)lvs为何不能完全替代DNS轮询

why-lvs-can-not-instead-of-DNS-polling

对于接入层负载均衡技术,部分同学持这样的观点: nginx前端加入lvs和keepalived可以替代“DNS轮询” F5能搞定接入层高可用、扩展性、负载均衡,可以替代“DNS轮询” “DNS轮询”究竟是不是过时的技术,是不是可以被其他方案替代,接入层架构技术演进,是本文将要细致讨论的内容。 一、问题域 nginx、lvs、keepalived、f5、DNS轮询,每每提到这...

(转)互联网架构,如何进行容量设计

how to value capacity

一、需求缘起 互联网公司,这样的场景是否似曾相识: 场景一:pm要做一个很大的运营活动,技术老大杀过来,问了两个问题: 机器能抗住么? 如果扛不住,需要加多少台机器? 场景二:系统设计阶段,技术老大杀过来,又问了两个问题: 数据库需要分库吗? 如果需要分库,需要分几个库? 技术上来说,这些都是系统容量预估的问题,容量设计是架构师必备的技能之一。常见的容量评...

(转)秒杀系统架构优化思路

why-lvs-can-not-instead-of-DNS-polling

一、秒杀业务为什么难做 im系统,例如qq或者微博,每个人都读自己的数据(好友列表、群列表、个人信息) 微博系统,每个人读你关注的人的数据,一个人读多个人的数据 秒杀系统,库存只有一份,所有人会在集中的时间读和写这些数据,多个人读一个数据。 二、优化方向 优化方向有两个: 将请求尽量拦截在系统上游(不要让锁冲突落到数据库上)。传统秒杀系统之所以挂,请求...

(转)应用层/安全层/传输层如何进行协议选型?

how-to-choose-protocal

系统设计,协议先行 大部分技术人没有接触协议的设计细节,更多的是使用已有协议进行应用层的编码,例如: 使用http作为载体,设计get/post/cookie参数 使用dubbo框架,而不用去深究内部的二进制包头包体,以及序列化反序列化的细节 无论如何,了解协议设计的原则,对深入理解系统通信非常有帮助。今天就以即时通讯(后称im)为例,讲讲应用层的协议选型。 一、im协议...

(转)100亿数据1万属性数据架构设计

Data structure design with a lot of data and attribute

对于version+ext方案,还是有很多朋友质疑“线上不可能这么用”。本篇将讲述一下58同城最核心的数据“帖子”的架构实现技术细节,说明不仅不是“不可能这么用”,而是大数据,可变属性,搞吞吐量场景下的“常用手段”。 一、背景描述及业务介绍 问:什么是数据库扩展的version+ext方案? 使用ext来承载不同业务需求的个性化属性,使用version来标识ext里各个字段的含义。 ...

(转)线程数究竟设多少合理

How many thread Number is suitable

一、需求缘起 Web-Server通常有个配置,最大工作线程数,后端服务一般也有个配置,工作线程池的线程数量,这个线程数的配置不同的业务架构师有不同的经验值,有些业务设置为CPU核心数的2倍,有些业务设置为CPU核心数的8倍,有些业务设置为CPU核心数的32倍。“工作线程数”d嗯设置依据是什么,到底设置为多少能够最大化CPU性能,是本文要讨论的问题。 二、一些共性认知 在进行进一步深入...

(转)究竟啥才是互联网架构“高并发”

what is High Concurrency

一、什么是高并发 高并发(High Concurrency)是互联网分布式系统架构偶设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。 高并发相关常用的一些指标有响应时间(Response Time),吞吐量(Throughput),每秒查询率QPS(Query Per Second),并发用户数等。 响应时间:系统对请求做出响应的时间。例如系统处理一个h...