自定义博客皮肤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搬运工

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

原创 如何实施异构服务器的负载均衡及过载保护?

后端的service有可能部署在硬件条件不同的服务器上:1)如果对标最低配的服务器“均匀”分摊负载,高配的服务器的利用率不足;2)如果对标最高配的服务器“均匀”分摊负载,低配的服务器可能会扛不住;能否根据异构服务器的处理能力来动态、自适应进行负载均衡及过载保护,是本文要讨论的问题。一、service层的负载均衡通常是怎么做的“一分钟了解负载均衡”中提到,service层...

2017-10-30 22:48:15 269

原创 lvs为何不能完全替代DNS轮询

上一篇文章“一分钟了解负载均衡的一切”引起了不少同学的关注,评论中大家争论的比较多的一个技术点是接入层负载均衡技术,部分同学持这样的观点:1)nginx前端加入lvs和keepalived可以替代“DNS轮询”2)F5能搞定接入层高可用、扩展性、负载均衡,可以替代“DNS轮询”“DNS轮询”究竟是不是过时的技术,是不是可以被其他方案替代,接入层架构技术演进,是本文将要细致讨论的内容。...

2017-10-30 22:01:37 402

原创 一分钟了解负载均衡的一切

什么是负载均衡负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一,它通常是指,将请求/数据【均匀】分摊到多个操作单元上执行,负载均衡的关键在于【均匀】。常见的负载均衡方案常见互联网分布式架构如上,分为客户端层、反向代理nginx层、站点层、服务层、数据层。可以看到,每一个下游都有多个上游调用,只需要做到,每一个上游都均匀访问每一个下游,就能实现“将请求...

2017-10-30 18:55:31 451

原创 一分钟了解四层/七层反向代理

什么是四层反向代理hash 什么是七层反向代理hash 中间还有三层那里去了 ... 今天花几分钟简单和大家解释一下。场景:访问用户通过proxy请求被访问的真实服务器路径:用户 ->proxy-> real-server什么是代理?回答:[proxy]代表[访问用户],此时proxy是...

2017-10-30 18:45:22 4275

原创 究竟啥才是互联网架构“高并发”

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

2017-10-30 08:13:04 296

原创 究竟啥才是互联网架构“高可用”

一、什么是高可用高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。假设系统一直能够提供服务,我们说系统的可用性是100%。如果系统每运行100个时间单位,会有1个时间单位无法提供服务,我们说系统的可用性是99%。很多公司的高可用目标是4个9,也就是99.99%,这就意味着,系统的年停机时间为8....

2017-10-29 21:23:18 301

原创 58到家MQ如何快速实现流量削峰填谷

问:站点与服务,服务与服务上下游之间,一般如何通讯?答:有两种常见的方式一种是“直接调用”,通过RPC框架,上游直接调用下游。在某些业务场景之下(具体哪些业务场景,见《到底什么时候该使用MQ?》),可以采用“MQ推送”,上游将消息发给MQ,MQ将消息推送给下游。问:为什么会有流量冲击?答:不管采用“直接调用”还是“MQ推送”,都有一个缺点,下游消息接收方无法...

2017-10-29 20:58:44 1526 1

原创 消息总线能否实现消息必达?

一、缘起任务、延迟消息都放在内存里,万一重启了怎么办?能否保证消息必达?今天就简单聊聊消息队列(MsgQueue)的消息必达性架构与流程。二、架构方向MQ要想尽量消息必达,架构上有两个核心设计点:(1)消息落地(2)消息超时、重传、确认三、MQ核心架构上图是一个MQ的核心架构图,基本可以分为三大块:(1)发送方->左侧粉色部分...

2017-10-29 20:42:31 807

原创 消息总线真的能保证幂等

一、缘起如《消息总线消息必达》所述,MQ消息必达,架构上有两个核心设计点:(1)消息落地(2)消息超时、重传、确认再次回顾消息总线核心架构,它由发送端、服务端、固化存储、接收端四大部分组成。为保证消息的可达性,超时、重传、确认机制可能导致消息总线、或者业务方收到重复的消息,从而对业务产生影响。举个栗子:购买会员卡,上游支付系统负责给用户扣款,下游系...

2017-10-27 14:54:06 261

原创 1分钟实现“延迟消息”功能

一、缘起很多时候,业务有“在一段时间之后,完成一个工作任务”的需求。例如:滴滴打车订单完成后,如果用户一直不评价,48小时后会将自动评价为5星。一般来说怎么实现这类“48小时后自动评价为5星”需求呢?常见方案:启动一个cron定时任务,每小时跑一次,将完成时间超过48小时的订单取出,置为5星,并把评价状态置为已评价。假设订单表的结构为:t_order(oid,...

2017-10-27 07:54:42 1097

原创 10w定时任务,如何高效触发超时

一、缘起很多时候,业务有定时任务或者定时超时的需求,当任务量很大时,可能需要维护大量的timer,或者进行低效的扫描。例如:58到家APP实时消息通道系统,对每个用户会维护一个APP到服务器的TCP连接,用来实时收发消息,对这个TCP连接,有这样一个需求:“如果连续30s没有请求包(例如登录,消息,keepalive包),服务端就要将这个用户的状态置为离线”。其中,单机TC...

2017-10-27 07:43:44 289

原创 到底什么时候该使用MQ

一、缘起一切脱离业务的架构设计与新技术引入都是耍流氓。引入一个技术之前,首先应该解答的问题是,这个技术解决什么问题。就像微服务分层架构之前,应该首先回答,为什么要引入微服务,微服务究竟解决什么问题(详见《互联网架构为什么要做微服务?》)。最近分享了几篇MQ相关的文章:《MQ如何实现延时消息》《MQ如何实现消息必达》《MQ如何实现幂等性》不少网友询问...

2017-10-26 22:01:50 373

原创 一分钟了解索引技巧

花1分钟时间,了解聚集索引,非聚集索引,联合索引,索引覆盖。举例,业务场景,用户表,表结构为:t_user(uid primary key,login_name unique,passwd,login_time,age,…);聚集索引(clustered index):聚集索引决定数据在磁盘上的物理排序,一个表只能有一个聚集索引,一般用prima...

2017-10-26 21:05:05 423

原创 多key业务,数据库水平切分架构一次搞定

数据库水平切分是一个很有意思的话题,不同业务类型,数据库水平切分的方法不同。本篇将以“订单中心”为例,介绍“多key”类业务,随着数据量的逐步增大,数据库性能显著降低,数据库水平切分相关的架构实践。一、什么是“多key”类业务所谓的“多key”,是指一条元数据中,有多个属性上存在前台在线查询需求。订单中心业务分析订单中心是一个非常常见的“多key”业务,主要提...

2017-10-26 18:55:50 314

原创 多对多业务,数据库水平切分架构一次搞定

本文将以“好友中心”为例,介绍“多对多”类业务,随着数据量的逐步增大,数据库性能显著降低,数据库水平切分相关的架构实践。一、什么是多对多关系所谓的“多对多”,来自数据库设计中的“实体-关系”ER模型,用来描述实体之间的关联关系,一个学生可以选修多个课程,一个课程可以被多个学生选修,这里学生与课程时间的关系,就是多对多关系。二、好友中心业务分析好友关系主要分为两类,弱好友...

2017-10-26 18:36:41 518

原创 1对多业务,数据库水平切分架构一次搞定

本文将以“帖子中心”为例,介绍“1对多”类业务,随着数据量的逐步增大,数据库性能显著降低,数据库水平切分相关的架构实践: 如何来实施水平切分 水平切分后常见的问题 典型问题的优化思路及实践 一、什么是1对多关系所谓的“1对1”,“1对多”,“多对多”,来自数据库设计中的“实体-关系”ER模型,用来描述实体之间的映射关系。1对1 一个用户只有一...

2017-10-25 18:56:57 526

原创 MySQL的or/in/union与索引优化

假设订单业务表结构为:order(oid, date, uid, status, money, time, …)其中: oid,订单ID,主键 date,下单日期,有普通索引,管理后台经常按照date查询 uid,用户ID,有普通索引,用户查询自己订单 status,订单状态,有普通索引,管理后台经常按照status查询 money/time,...

2017-10-25 18:15:25 329

原创 MySQL冗余数据的三种方案

一,为什么要冗余数据互联网数据量很大的业务场景,往往数据库需要进行水平切分来降低单库数据量。水平切分会有一个patition key,通过patition key的查询能够直接定位到库,但是非patition key上的查询可能就需要扫描多个库了。此时常见的架构设计方案,是使用数据冗余这种反范式设计来满足分库后不同维度的查询需求。例如:订单业务,对用户和商家都有订...

2017-10-25 08:05:26 2253

原创 MySQL双主一致性架构优化

一、双主保证高可用MySQL数据库集群常使用一主多从,主从同步,读写分离的方式来扩充数据库的读性能,保证读库的高可用,但此时写库仍然是单点。在一个MySQL数据库集群中可以设置两个主库,并设置双向同步,以冗余写库的方式来保证写库的高可用。二、并发引发不一致数据冗余会引发数据的一致性问题,因为数据的同步有一个时间差,并发的写入可能导致数据同步失败,引起数据丢失:如...

2017-10-25 07:52:18 740

原创 或许你不知道的10条SQL技巧

这几天在写索引,想到一些有意思的TIPS,希望大家有收获。一、一些常见的SQL实践(1)负向条件查询不能使用索引 select * from order where status!=0 and stauts!=1 not in/not exists都不是好习惯可以优化为in查询: select * from order where statusin(2,3...

2017-10-24 22:28:47 183

原创 分层架构,是否需要业务服务层

《互联网分层架构的本质》简述了两个观点: 互联网分层架构的本质,是数据的移动 互联网分层架构演进的核心原则:是让上游更高效的获取与处理数据,让下游能屏蔽数据的获取细节 《分层架构:什么时候抽象DAO层,什么时候抽象数据服务层》中的观点是: 当手写代码从DB中获取数据,成为通用痛点的时候,就应该抽象出DAO层,简化数据获取过程,提高数据获取效率,向上游屏蔽底层的复杂性...

2017-10-24 22:13:31 1407

原创 互联网分层架构之-DAO与服务化

互联网分层架构的本质,是数据的移动。互联网分层架构演进的核心原则: 让上游更高效的获取与处理数据,复用 让下游能屏蔽数据的获取细节,封装 这些在上一篇《互联网分层架构的本质》中有详尽的描述,在实际系统架构演进过程中,如何利用这两个原则,对系统逐步进行分层抽象呢?咱们先从后端系统开始讲解。本文主要解答两个问题: 后端架构,什么时候进行DAO层的抽象...

2017-10-24 21:29:58 561

原创 互联网分层架构的本质

上图是一个典型的互联网分层架构: 客户端层:典型调用方是browser或者APP 站点应用层:实现核心业务逻辑,从下游获取数据,对上游返回html或者json 数据-缓存层:加速访问存储 数据-数据库层:固化数据存储 如果实施了服务化,这个分层架构图可能是这样:中间多了一个服务层。同一个层次的内部,例如端上的APP,以...

2017-10-24 08:03:37 314

原创 线上服务内存OOM问题定位三板斧

相信大家都有感触,线上服务内存OOM的问题,是最难定位的问题,不过归根结底,最常见的原因: 本身资源不够 申请的太多 资源耗尽 58到家架构部,运维部,58速运技术部联合进行了一次线上服务内存OOM问题排查实战演练,将内存OOM问题定位三板斧分享出来,希望对大家也有帮助。题目某服务器上部署了Java服务一枚,出现了OutOfMemoryError,...

2017-10-23 22:39:15 995

原创 线上服务CPU100%问题快速定位实战

功能问题,通过日志,单步调试相对比较好定位。性能问题,例如线上服务器CPU100%,如何找到相关服务,如何定位问题代码,更考验技术人的功底。58到家架构部,运维部,58速运技术部联合进行了一次线上服务CPU问题排查实战演练,同学们反馈有收获,特将实战演练的试题和答案公布出来,希望对大家也有帮助。题目某服务器上部署了若干tomcat实例,即若干垂直切分的Java站点...

2017-10-23 22:20:59 322

原创 linux下追查线上问题常用命令

inux下追查线上问题常用命令(1)查占用cpu最多的进程方法一:核心指令:ps实际命令:ps H -eo pid,pcpu | sort -nk2 | tail执行效果如下:[work@test01 ~]$ ps H -eo pid,pcpu | sort -nk2 | tail31396 0.631396 0.631396 0.631396 0...

2017-10-23 22:16:25 230

原创 一分钟学awk够用

1.什么是AWK(1)Aho、Weinberger、Kernighan三位发明者名字首字母;(2)一个行文本处理工具;2.AWK基本原理2.1原理:逐行处理文件中的数据2.2语法: awk 'pattern + {action}' 说明:(1)单引号''是为了和shell命令区分开;(2)大括号{}表示一个命令分组;(3)pattern是一...

2017-10-23 22:15:32 316

原创 一分钟sed入门

1.简介sed是一种行编辑器,它一次处理一行内容。2.sed调用方式sed [options] 'command' file(s)sed [options] -f scriptfile file(s)第一种直接在命令行中执行,第二种把命令写到了脚本中,二者无本质区别。示例(1):打印hello.txt的内容sed -n p hello.txt说明:-n...

2017-10-23 22:14:39 488

原创 线上操作与线上问题排查实战

技术同学需要经常登录线上的服务器进行操作,58到家架构部/运维部/58速运技术部,联合进行了一次线上操作与线上问题排查实战演练,同学们反馈有收获,特将实战演练的问题和答案公布出来,希望对大家也有帮助。一、了解机器连接数情况问题:1.2.3.4的sshd的监听端口是22,如何统计1.2.3.4的sshd服务各种连接状态(TIME_WAIT/ CLOSE_WAIT/ ESTABLI...

2017-10-23 21:27:10 1033

原创 URI设计原则

咱们设计的REST API真的nice么?优雅型:http://api.exapmle.com/louvre/da-vinci/mona-lisa卢浮宫/达芬奇/蒙娜丽莎中庸型:http://58.com/bj/ershou/310976北京/二手频道/帖子ID谢特型:http://api.example.com/68dd0-a9d3-11e0-9f1c不知道什么鬼...

2017-10-23 20:53:38 1130

原创 速运“里程计算”优化与演进

58速运货物运输,滴滴快递网约车,司机端都是按照行驶公里数收费的,所以“里程”的准确性,是这类业务的一个核心难题,“里程计算”方案演进,以及其中优化思想,是本文要讨论的问题一、直接调用地图API这是最容易想到的方法,最省事,但司机往往不是按照预定的路线行驶的,很有可能因为堵车、道路封闭等改变路线,所以直接调用地图API,一次性计算出一个预估值,不太靠谱优化方案:根据实际路线...

2017-10-22 22:32:15 1341

原创 谈消息安全传输中的技术点

和女/男票聊了一些私密的话,成天担心消息会不会被泄漏,始终不放心,看完此文,消息传输安全性的来龙去脉,终于略知一二了。一、初级阶段:信息裸传特点:在网络上传递明文黑客定理一:网络上传递的数据是不安全的,属网络于黑客公共场所,能被截取结果:传递明文无异于不穿衣服裸奔改进方案:先加密,再在网络上传输二、进阶阶段:传输密文特点: 服...

2017-10-22 22:01:35 570

原创 工作线程数究竟要设置为多少

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

2017-10-22 21:22:44 709

原创 分布式ID生成器

一、需求缘起几乎所有的业务系统,都有生成一个唯一记录标识的需求,例如: 消息标识:message-id 订单标识:order-id 帖子标识:tiezi-id 这个记录标识往往就是数据库中的主键,数据库上会建立聚集索引(cluster index),即在物理存储上以这个字段排序。这个记录标识上的查询,往往又有分页或者排序的业务需求,例如: 拉...

2017-10-22 20:46:26 242

微服务那些事儿

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

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关注的人

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