自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

HelloWorld搬运工

HelloWorld搬运工

  • 博客(22)
  • 资源 (9)
  • 收藏
  • 关注

原创 im不丢消息设计

一、报文类型im的客户端与服务器通过发送报文(也就是网络包)来完成消息的传递,报文分为三种请求报文(request,后简称为为R)应答报文(acknowledge,后简称为A)通知报文(notify,后简称为N),这三种报文的解释如下:R:客户端主动发送给服务器的报文A:服务器被动应答客户端的报文,一个A对应一个RN:服务器主动发送给客户端的报文二、普通消息投递流程...

2017-11-26 17:28:48 2005 2

原创 缓存架构设计细节二三事

本文主要讨论这么几个问题:(1)“缓存与数据库”需求缘起(2)“淘汰缓存”还是“更新缓存”(3)缓存和数据库的操作时序(4)缓存和数据库架构简析一、需求缘起场景介绍缓存是一种提高系统读性能的常见技术,对于读多写少的应用场景,我们经常使用缓存来进行优化。例如对于用户的余额信息表account(uid, money),业务上的需求是:(1)查询用户的余额,SE...

2017-11-13 22:50:41 499

原创 数据库软件架构设计些什么

一、基本概念二、数据库架构设计思路(1)可用性(2)读性能(3)一致性(4)扩展性一、基本概念概念一“单库”概念二“分片”分片解决的是“数据量太大”的问题,也就是通常说的“水平切分”。一旦引入分片,势必有“数据路由”的概念,哪个数据访问哪个库。路由规则通常有3种方法:(1)范围:range优点:简单,容易扩展缺点:各库...

2017-11-13 22:24:14 1123

原创 100亿数据1万属性数据架构设计

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

2017-11-12 08:50:31 513

原创 这才是真正的表扩展方案

零、缘起讨论问题域:(1)数据量大、并发量高场景,在线数据库属性扩展(2)数据库表结构扩展性设计一、哪些方案一定是不行的(1)alter table add column要坚持这个方案的,也不多解释了,大数据高并发情况下,一定不可行(2)通过增加表的方式扩展,通过外键join来查询大数据高并发情况下,join性能较差,一定不可行(3)通过增加表...

2017-11-12 08:29:46 669

原创 啥,又要为表增加一列属性?

需求缘起产品第一版:用户有用户名、密码、昵称等三个属性,对应表设计:user(uid, name, passwd, nick)第二版,产品经理增加了年龄,性别两个属性,表结构可能要变成:user(uid, name, passwd, nick, age, sex)假设数据量和并发量比较大,怎么变?(1)alter table add column?不太可行,锁表时间长...

2017-11-12 08:18:08 414

原创 一张“神图”看懂单机/集群/热备/磁盘阵列(RAID)

单机部署(stand-alone):只有一个饮水机提供服务,服务只部署一份集群部署(cluster):有多个饮水机同时提供服务,服务冗余部署,每个冗余的服务都对外提供服务,一个服务挂掉时依然可用热备部署(hot-swap):只有一个桶提供服务,另一个桶stand-by,在水用完时自动热替换,服务冗余部署,只有一个主服务对外提供服务,影子服务在主服务挂掉时顶上磁盘阵列RAID(Red...

2017-11-11 08:02:55 586

原创 mysql中decimal,numeric,double,float的区别

概述:简单来说decimal,numeric属于标准数据类型,指定精度和刻度;decimal的存储大小不确定,numeric的存储大小默认8个字节。double,float属于非标准数据类型,在DB中保存的是近似值,而Decimal则以字符串的形式保存数值。float,double类型是可以存浮点数(即小数类型),但是float有个坏处,当你给定的数据是整数的时候,那么它就以整数给你处理...

2017-11-10 18:35:46 11162

原创 一分钟了解两阶段提交2PC

一、概念二阶段提交2PC(Two phase Commit)是指,在分布式系统里,为了保证所有节点在进行事务提交时保持一致性的一种算法。二、背景在分布式系统里,每个节点都可以知晓自己操作的成功或者失败,却无法知道其他节点操作的成功或失败。当一个事务跨多个节点时,为了保持事务的原子性与一致性,需要引入一个协调者(Coordinator)来统一掌控所有参与者(Participant)...

2017-11-10 08:06:01 660

原创 连接池原来这么简单

一、如何通过连接访问下游工程架构中有很多访问下游的需求,下游包括但不限于服务/数据库/缓存,其通讯步骤是为:(1)与下游建立一个连接(2)通过这个连接,收发请求(3)交互结束,关闭连接,释放资源这个连接是什么呢,通过连接怎么调用下游接口?服务/数据库/缓存,官方会提供不同语言的Driver、Document、DemoCode来教使用方建立连接与调用接口,以MongoDB的...

2017-11-10 07:53:59 869

原创 一分钟实现分布式锁

一、缘起分布式环境下,多台机器上多个进程对一个数据进行操作,如果不做互斥,就有可能出现“余额扣成负数”,或者“商品超卖”的情况,如何实现简易分布式锁,对分布式环境下的临界资源做互斥,是今天将要讨论的话题。二、互斥原理原理:多个访问方对同一个资源进行操作,需要进行互斥,通常是利用一个这些访问方同时能够访问到的lock来实施互斥的。例子1:同一个进程内,多个线程的互斥,典型...

2017-11-10 07:43:33 455

原创 应用层/安全层/传输层如何进行协议选型

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

2017-11-09 19:03:11 995

原创 互联网架构为什么要做服务化?

一、互联网高可用架构,为什么要服务化?【服务化之前高可用架构】在服务化之前,互联网的高可用架构大致是这样一个架构:(1)用户端是浏览器browser,APP客户端(2)后端入口是高可用的nginx集群,用于做反向代理(3)中间核心是高可用的web-server集群,研发工程师主要编码工作就是在这一层(4)后端存储是高可用的db集群,数据存储在这一层更典型的,w...

2017-11-09 18:39:05 4715 5

原创 单点系统架构的可用性与性能优化

一、需求缘起明明架构要求高可用,为何系统中还会存在单点?回答:单点master的设计,会大大简化系统设计,何况有时候避免不了单点在哪些场景中会存在单点?先来看一下一个典型互联网高可用架构。典型互联网高可用架构:(1)客户端层,这一层是浏览器或者APP,第一步先访问DNS-server,由域名拿到nginx的外网IP(2)负载均衡层,nginx是整个服务端的入口,负责...

2017-11-08 08:13:10 663

原创 关于分布式程序设计常见问题分析

虽然系统越来越复杂,以及新分布式架构设计的思想普及,越来越多的系统采用了分布式的架构,特别是HTTP为交互方式的接口调用,移动端和PC端的并行对分布式架构带来了很大的推动。各式各样的服务接口,在处理业务流程之外有一些共性的问题,正视设计和解决这些问题,会大大提高程序的可用性,扩展性和可维护性。 以下总结是笔者工作中对于分布式设计问题的总结,具体内容如下:1、日期格式时间在生活中是一个容易忽...

2017-11-08 07:21:22 425

原创 互联网架构,如何进行容量设计?

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

2017-11-07 22:14:35 421

原创 计数系统架构实践一次搞定

一、需求缘起很多业务都有“计数”需求,以微博为例:微博首页的个人中心部分,有三个重要的计数: 关注了多少人的计数 粉丝的计数 发布博文的计数 微博首页的博文消息主体部分,也有有很多计数,分别是一条博文的: 转发计数 评论计数 点赞计数 甚至是浏览计数 在业务复杂,计数扩展频繁,数据量大,并发量大的情...

2017-11-07 21:33:19 446

原创 58同城推荐系统架构设计与实现

一、推荐系统架构介绍推荐系统是一个微庞大的工程、算法与业务综合的系统,其主要分为三大子系统:1)线下推荐子系统;2)线上推荐子系统;3)效果评估子系统;后文将重点讨论以上三大子系统的设计与实现。二、线下推荐子系统线下推荐子系统又主要分为线下挖掘模块、数据管理工具两大部分。线下挖掘模块线下挖掘模块,是各类线下挖掘算法实施的核心,它读取各种数据源,运用各种...

2017-11-06 08:06:16 1608

原创 互联网智能广告系统简易流程与架构

一、业务简述从业务上看整个智能广告系统,主要分为:1)业务端:广告主的广告后台2)展现端:用户实际访问的页面业务端,广告主主要有两类行为:1)广告设置行为:例如设置投放计划,设置地域,类别,关键字,竞价等2)效果查看行为:例如广告展示次数是多少,广告点击次数是多少等展现端,用户主要也有两类行为:1)站点浏览行为:用户浏览实际的信息,此时广告系...

2017-11-03 08:03:35 1839

原创 58到家通用实时消息平台架构细节

一、解决什么问题 + 难点解决什么业务问题(1)端到云的实时上报需求:58速运司机端GPS实时上报(2)云到端的实时推送需求:58速运司机订单实时推送(3)端到端的聊天消息需求:用户、商户、客服之间的聊天沟通难点:(1)APP无线环境下消息可达性(2)通用性,平台实现尽量与业务解耦二、传统解决方案与潜在不足【端到云:http轮询上报GPS消息】方案...

2017-11-03 07:41:24 1934

原创 秒杀系统架构优化思路

一、秒杀业务为什么难做1)im系统,例如qq或者微博,每个人都读自己的数据(好友列表、群列表、个人信息);2)微博系统,每个人读你关注的人的数据,一个人读多个人的数据;3)秒杀系统,库存只有一份,所有人会在集中的时间读和写这些数据,多个人读一个数据。例如:小米手机每周二的秒杀,可能手机只有1万部,但瞬时进入的流量可能是几百几千万。又例如:12306抢票,票是有限的,库存一...

2017-11-01 08:09:14 595

原创 百度咋做长文本去重

缘起:(1)原创不易,互联网抄袭成风,很多原创内容在网上被抄来抄去,改来改去(2)百度的网页库非常大,爬虫如何判断一个新网页是否与网页库中已有的网页重复呢?这是本文要讨论的问题(尽量用大家都能立刻明白的语言和示例表述)。一、传统签名算法与文本完整性判断问题抛出:(1)运维上线一个bin文件,将文件分发到4台线上机器上,如何判断bin文件全部是一致的?(2)用户A将...

2017-11-01 07:25:33 2161

微服务那些事儿

微服务那些事儿 近儿年,微服务的兴起对从事资讯科技的各级别、各功能、各种技术的人员来说是 重大挑战,也是 个突破的机会。

2018-02-26

Docker开发指南201704

Docker 容器轻量和可移植的特性尤其适用于动态和分布式的环境,它的兴起给软件开发流程带来了一场革命。

2018-02-13

强化学习在阿里的技术演进与业务创新

强化学习在阿里的技术演进与业务创新 强化学习在阿里的技术演进与业务创新

2018-02-07

Git权威指南带书签完整版

Git权威指南带书签完整版 Git权威指南带书签完整版 Git权威指南带书签完整版

2018-01-30

一键断开redis服务端的的所有客户端链接

切换redis后客户端长连接仍旧与旧的服务端保持连接,使用此程序可以从旧的redis服务端断开所有客户端链接。

2018-01-24

阿里巴巴9年双11

阿里巴巴9年双11,互联网超级工程。AI智能搜索。阿里的双 11 是一次全球商业、科技、数据、智能的大协同,是一个 商业社会的大协同,更是一个技术的大协同,是名副其实的世界互联网技 术的超级工程。

2018-01-23

阿里巴巴2016双11背后的技术

2016 天猫双 11 全球狂欢节活动圆满落幕,来自全球的消费者一共创造了 1207 亿 的成交额,在这个过程中整体系统平稳运行,用户购物、支付体验流畅,物流包裹也井 然有序地送到消费者手中,这背后是阿里领先的交易、支付、物流系统,以及强大的计 算平台、海量数据和智能算法的共同支撑。在双 11 零点开始的半个小时里,超过 6 千 万的用户使用手机来同时参与了这次活动,在零点的流量高峰,创造了每秒交易峰值 17.5 万笔,每秒支付峰值 12 万笔的新纪录,而 2009 年的第一次双 11,交易峰值仅为 400 笔每秒,支付峰值仅为 200 笔每秒,八年增长数百倍。

2018-01-19

Java系统获取最近修改代码的class文件

根据class的编译时间,获取指定时间段内修改的java文件class

2017-06-16

Java数据结构概述图表

2017-02-16

空空如也

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

TA关注的人

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