自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

04stone37

日积月累

  • 博客(540)
  • 收藏
  • 关注

原创 进程资源查看pidstat

作用  查看全部或指定进程占用系统资源的情况,如CPU,内存、设备IO、任务切换、线程等。pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。使用指定采样周期和次数命令格式:pidstat [option] interval [count]pidstat 3 10...

2019-11-22 11:42:56 206

原创 大字段优化

大字段类型  Mysql中的text/blob/longtext/longblob/varchar(8192)等占用较大存储空间的字段类型;影响占用大量的存储空间。因为每个大字段溢出的数据都会存储在单独页中(存储独享),现象就是占用的存储空间远超过实际的数据量;读写性能下降。相同的内存能够缓存的记录变少(占用的页变多);优化方式方式1: 压缩&压缩:将多个大字段合并成一个,...

2019-11-14 19:47:17 549

转载 商品中心 --- 淘宝类目属性体系

转载:浅谈淘宝类目属性体系:商品搜索背后的逻辑架构商品分类体系的演变商品数量很少,没有分类;商品数量过百,开始使用一级类目;商品数量成千上万,开始使用多级类目,即类目树;商品数量达到百万级,甚至亿级别,开始使用“类目+属性”的分类体系,避免类目层级过深;前后台类目分离,满足不同用户需求(卖家通过后台类目发布商品,买家通过前台类目选购商品);整体架构  淘宝类目属性体系主要由后...

2019-11-13 17:41:12 6208 1

原创 商业模式:平台和自营

平台模式  平台商业模式指链接两个(或更多)特定群体,为他们提供互动机制,满足所有群体的需求,并巧妙地从中盈利的商业模式,最典型的代表就是淘宝。自营模式 企业自己对经营的产品进行统一生产或采购、产品展示、在线交易,并通过物流配送将产品投放到最终消费群体的行为,典型代表就是京东,具有品牌力强、产品质量可控、全交易流程管理体系完备等特点。平台 VS 自营用户体验上 平台上产品种类众多,用...

2019-11-07 16:22:12 4453

原创 库存扣减

扣减时机  何时扣减扣减库存,目前有两种主流方式:方式1:下单减库存——即用户下单成功时减少库存数量优点:用户体验好,系统逻辑简单;缺点:会导致恶意下单或下单后却不买,使得真正有需求的用户无法购买,影响真实销量;解决办法:设置订单有效时间,若订单创建成功N分钟不付款,则订单取消,库存回滚;限购,用各种条件来限制买家的购买件数,比如一个账号、一个ip,只能买一件;风控,从技术角...

2019-10-17 17:13:37 3878

原创 订单系统设计 --- 订单中心存储方案

目标  为某垂直领域的电商平台设计一个订单中心,用户、商家和运营可以对订单中心进行不同的操作;需求分析C端:访问量大,数据的实时性和一致性要求高,主要是订单列表和订单详情的查询;B端:访问量适中,对数据的实时性和一致性有一定容忍度,主要是B端展示的几个维度的分页查询;M端:访问量低,查询条件复杂多变,查询的数据量大,对系统可用性、数据的实时性和一致性等容忍度最高;存储方案设计...

2019-10-16 10:08:40 3219

原创 订单系统设计 --- SaaS订单中心存储方案

SaaS订单中心作用  为油站提供订单管理能力,管理线上(各种互联网加油平台,比如小桔加油、车主邦等)、线下等不同渠道的订单;需求分析

2019-10-14 09:37:57 1974

原创 用户中心 --- 存储方案

需求分析用户侧  用户侧对用户中心的查询特点是:查询频次高,基本上都是单条查询,对数据的实时性和一致性要求高,99%的请求为uid查询用户信息,1%的请求为根据用户名/邮箱/手机号等条件查询用户信息;运营侧 运营侧对用户中心的查询特点是:查询频次低,查询数据量大,查询条件复杂(年龄、性能、注册时间等),对数据的实时性和一致性容忍度高;存储方案设计  整体思路:用户表按照uid分库分表...

2019-10-12 17:47:15 490

原创 存储计算分离初窥

什么是存储计算分离?  存储计算分离是一种分层架构思想,即将存储能力和计算能力分开,各自服务化,通过高速网络连接;以AWS的大护具架构为例,底层统一采用S3存储,存储层上架设各种计算引擎比如HIVE、Spark等,如下图所示:基于OSS构建数仓的优势海量的存储空间,可弹性扩展;极低的存储成本;支持多种计算引擎,目前OSS上数据支持如下计算引擎:开源的Spark、Presto、Drui...

2019-10-10 23:35:45 2980

原创 订单系统设计 --- 系统优化

订单查询实时性要求高的查询走DB;复杂查询或非实时查询走ES;避免深分页查询,即limit m,n中的m不要过大;

2019-09-28 16:58:51 439

原创 订单系统设计 --- 交易快照

含义  买卖双方在成交时记录当时交易状况的一张“照片”,即交易快照为一份静态数据,记录了交易时的数据,特别是容易变化的数据,比如商品信息,以及优惠信息等;作用  作为发生交易争执时的判断依据;范围  订单信息中已经包含了交易时的很多信息,为避免重复,交易快照存储容易发生变化的信息的详情,比如淘宝存储了商品详情,如上图所示;存储时间  不同公司根据具体的业务情况来决定,目前淘宝是永久...

2019-09-28 16:09:04 12578

原创 产品经理职责认知

  在不同管理架构的公司、不同类型的团队中,或者开发不同类型的产品,产品经理角色的差异是非常明显的。例如:有些产品经理负责与用户沟通、进行需求调研,有些负责交互设计和产品原型设计,有些产品经理从数据中挖掘需求,有些产品经理参与从需求调研、开发、上线推广到迭代的全过程,如下图所示:...

2019-09-28 11:05:30 326

原创 SpringBoot Logback扩展

日志配置诉求同一个配置文件,不同环境可以配置不同的日志级别和存储路径;当为特定的环境时,某些特定的配置可以生效;SpringBoot Logback扩展  SpringBoot对Logback进行了一定扩展,用户可以在logback-spring.xml中使用这些高级特性;变量引用  日志配置文件中,可以引用配置文件中的变量,比如日志级别和路径等; //source为配置文...

2019-09-09 21:14:10 492

原创 构建Maven多模块工程

为什么用Maven多模块每个模块功能明确,工程结构清晰;整个工程可一起构建,每个模块也可单独构建,方便模块的复用和对外暴露,特别是在微服务时代;Maven多模块工程结构IDEA创建示例创建父模块File → New → Project → Maven → Next → 输入GroupId/ArtifactId → Finish(无需使用任何archetype)如果有src...

2019-09-08 15:07:09 139

原创 商品中心 --- 基本概念

SPU和SKU  SPU指的是商品,SPU属性就是不会影响到库存和价格的属性, 又叫关键属性,与商品是一对一的关系;SKU指的是具体规格单品,SKU属性就是会影响到库存和价格的属性, 又叫销售属性,与商品是多对一的关系。  以iphone6s举例,它身上有很多的属性和值, 比如毛重: 420.00 g产地: 中国大陆容量: 16G, 64G, 128G颜色: 银, 白, 玫瑰金...

2019-07-24 23:18:31 3566

原创 开放平台初步认识

什么是开放平台?  开放平台可以理解为一个公司对外的窗口,公司通过开放平台将内部的标准、数据和服务等以API的形式开放出来,供第三方开发者使用,以便达到数据交互、合作共赢的目的,如下图所示:业界产品  基本上,稍微有些体量的互联网公司都会有自己的开放平台,比如淘宝、腾讯、滴滴、讯飞等,下图为腾讯开放平台的开放内容:参考:https://open.tencent.com/https...

2019-07-21 16:28:49 423

原创 微信支付: 普通商户 VS 服务商

区别普通商户:用户使用微信支付付款后,由微信直接与商户进行结算,没有资金冻结和分账;服务商:用户使用微信支付付款后,资金会先被微信冻结,时间到达后由服务商向微信发起分账,微信按照各分账方约定的比例进行分账,如下图所示:服务商模式介绍  服务商模式适用于第三方服务商帮助特约商户完成订单收单后,收取一定费用的场景,比如停车场、加油站、点外卖或订酒店等场景。以加油站为例,在服务商模式下,用...

2019-07-21 13:15:16 14978 2

原创 支付 VS 清算 VS 结算

概念标准定义支付: 完成付款人向收款人转移可以接受的货币债权的过程,包括交易过程、清算过程和结算过程等三个过程(一个完整的支付过程,清算和结算都属于支付的某个环节);清算: 包含了在收付款人金融机构之间交换支付工具以及计算金融机构之间待结算的债权,支付工具的交换也包括交易撮合、交易清分、数据收集等;结算: 该过程是完成债权最终转移的过程,包括收集待结算的债权并进行完整性检验、保证结算资金...

2019-07-21 12:42:08 1285

原创 读超时小于系统处理时间问题思考

问题描述  系统A调用系统B的服务,系统A设置了超时上限t1(读超时,或者熔断超时等),系统B服务处理时间为t2。当t1 < t2时,系统A会抛出超时异常,系统B可能处理成功也可能失败,但是系统A无法感知,如下图所示:...

2019-07-01 09:32:53 269

原创 定时器的几种常用方案及原理

常见方案单机:JDK的Timer、ScheduledThreadPoolExecutor,及Spring的@Scheduled;分布式:Quartz;JDK Timer  实现原理: 每个定时器实例绑定一个消费线程和任务队列,业务线程提交定时任务到任务队列,任务按照下次执行时间在队列中排序;消费线程每次从队首获取任务,查看是否超过执行时间点,超过则立马执行,否则await等待,如果是周...

2019-06-13 23:36:03 1368

原创 系统过载保护

什么是系统过载?  系统过载是指当前的外部请求量超过了系统的最大处理能力。比如,某系统每秒最多处理100条请求,但是它每秒收到的请求有200条,此时则认为该系统已经过载;系统过载的影响  系统过载会导致系统负载变高,其影响按照严重程度从低到高依次为:请求RT变长、服务不可用、上下游系统级联故障;过载保护的最终的目的:在系统过载时,服务还能提供一个稳定的较高的处理能力;系统过载方案 ...

2019-06-01 12:32:33 2421

原创 新一代Java缓存库 Caffeine

基本介绍  Caffeine是新一代Java缓存库,相比于Google的Guava Cache和ConcurrentLinkedHashMap性能更加出色,主要原因是采用了Window TinyLfu回收策略,比LRU提供了更高的缓存命中率,官网性能如下:使用说明pom依赖<dependency> <groupId>com.github.ben-manes...

2019-06-01 10:18:04 694

原创 TCP半连接队列和全连接队列

基本介绍半连接队列(syn queue)作用:TCP 三次握手中存储处于SYN_RECV状态的连接;最大长度:max(64, /proc/sys/net/ipv4/tcp_max_syn_backlog),syncookies = 0 时起效,syncookies = 1时将被忽略;全连接队列(accept queue)作用:TCP 三次握手中存储处于ESTABLISHED状态的...

2019-05-28 18:21:16 3891

翻译 Linux版本查看

命令及解析  使用命令cat /proc/version来查看Linux版本信息,输出信息如下:Linux version 2.6.18-92.el5 (brewbuilder@ls20-bc2-13.build.redhat.com) (gcc version 4.1.2 20071124 (Red Hat 4.1.2-41)) #1 SMP Tue Apr 29 13:16:15 EDT ...

2019-05-27 19:49:53 297

原创 HashMap注意点

注意点1:初始容量设置  尽量根据业务场景设置合理的初始容量(2的幂次方),避免频繁扩容和数据迁移,以此提升性能;注意点2:默认最大容量表容量/桶个数最大为2^30(MAXIMUM_CAPACITY设定),当桶个数超过设定上限时不再扩容;元素个数没有上限,当不断地往map中添加元素时,要么由于内存不够导致OOM,要么桶个数达到上限碰撞概率变大,导致map性能变差,实际生产中往往需要设定m...

2019-05-22 20:56:36 582

原创 Nginx location匹配

语法location [修饰符] uri { ... }修饰符= 表示精确匹配。只有请求的url路径与后面的字符串完全相等时,才会命中;~ 表示该规则是使用正则定义的,区分大小写;~* 表示该规则是使用正则定义的,不区分大小写;^~ 表示如果该符号后面的字符是最佳匹配,采用该规则,不再进行后续的查找;组成形式  location有两种表示形式,一种是使用前缀字符,一种是使用正...

2019-05-14 14:42:58 110

原创 tcpdump实验分析

实验准备安装nc工具:yum install nc监听本地网卡流量:tcpdump -i lo -n -nn tcp port 8888建立TCP/UDP连接:nc -p 1234 10.96.78.213 8888数据包分析14:07:53.220954为时间戳,精确到微妙,加-t不显示时间;10.96.78.213.1234含义:10.96.78.213为IP,1234为端口...

2019-05-13 15:35:08 303

原创 Nginx负载均衡

  Nginx既可以用作七层负载均衡也可以进行四层负载均衡,目前项目中通常使用Nginx进行七层负载均衡,LVS进行四层负载均衡;健康检查七层负载均衡:Nginx按照配置的URI定时发送请求,然后对比响应信息与配置的状态码,如果一直则认为健康;四层负载均衡:Nginx定时与要均衡的机器建立TCP/UDP连接,依次来判断机器和端口是否正常;参考:健康检查示例:https://bbs....

2019-05-09 22:54:25 157

原创 Nginx配置文件

基本信息配置文件名称:nginx.conf配置文件存储位置: /usr/local/nginx/conf、/etc/nginx、/usr/local/etc/nginx(依赖于具体的操作系统),或者显示指定配置文件位置;配置文件结构  全局的上下文为main,根据功能可以划分成events、http、mail和stream四个子上下文,每个上下文中又可以添加若干server上下文,如下...

2019-05-08 15:14:59 246

原创 IO问题排查思路及工具

影响  IO负载高会导致IO处理时间变长,IO等待队列变长,系统负载变高;IO负载高排查思路查看系统IO情况,iostat命令;查看各进程IO使用情况,iotop/pidstat命令;查看某个进程文件读写情况,ioprofile/lsof + strace;查看系统IO情况  说明:iostat和top命令中的iowait并不能等于IO负载情况,只是反映了CPU等待IO时间占用C...

2019-05-05 18:52:30 4868

原创 InnoDB并发控制技术之锁

锁模式Lock Mode共享锁(Lock Mode S):行级锁,可以与S锁共存,SQL语句比如select…lock in share mode会加S锁;互斥锁(Lock Mode X):行级锁,不能与其他锁共存,SQL语句比如select…for update及写操作都会加X锁;意向共享锁(Lock Mode IS):表级锁,事务向表中的数据加S锁时必须先获取表上的IS锁;意向互斥锁...

2019-04-28 17:15:57 235

原创 数据库相关各种超时时间

事务超时时间Transaction Timeout  事务超时时间规定了事务执行时间的上限,通常包含两大部分:SQL执行时间,以及业务处理时间,即Transaction timeout = Statement Timeout * N(所有SQL执行总时间) + 业务处理时间;@Transactional(timeout = 3) 单位秒 事务超时的报错信息:org.springframe...

2019-04-27 19:58:26 8678

原创 MySQL死锁日志

查看数据库死锁日志  查看命令:show engine innodb status \G  说明:通过show engine innodb status 查看的日志是最新一次记录死锁的日志,但是查看不到完整的事务的sql,通常显示当前正在等待锁的sql;死锁日志解析lock_mode X locks rec but not gap:表示不带gap锁的排它行锁;lock_mode X l...

2019-04-27 16:26:07 3479

原创 Dockerfile及指令

介绍  Dockerfile是一系列命令的集合,被Docker用来构建镜像。文件由一行行指令组成,每行指令格式如下:# CommentINSTRUCTION arguments命令解释拉取基础镜像:FROM  FROM指令必须为Dockerfile的第一条指令,用于拉取基础镜像,方便后续的构建;文件拷贝:ADD VS COPY  复制本地主机的 (为 Dockerfile 所在...

2019-04-18 23:16:12 149

原创 Docker OverlayFS文件系统

OverlayFS介绍  OverlayFS是一种联合文件系统,可看做AUFS的改进版,实现简单,性能更好,作用是将多个目录联合成一个目录,对外提供统一的视图。查看宿主机支持的文件系统: cat /proc/filesystems查看Docker的默认文件系统:docker info | grep -i "Storage Driver” 工作原理  OverlayFS仅支持两层(即两个...

2019-04-17 23:19:03 873

原创 Docker数据挂载

默认行为  默认情况下,容器创建的文件都存储在可写的容器层,这意味着:数据无法持久化: 容器内产生的数据的生命周期与容器一致,当容器销毁时,数据随之销毁;数据无法共享: 容器间无法共享数据;挂载方式Volumes(数据卷):将宿主机或者云存储等某个目录挂载到容器,特点是:1. 数据生命周期独立于容器,可持久存储;2. 数据卷由Docker管理,非Docker进程无法修改;Bind...

2019-04-14 17:53:56 189

原创 Docker介绍

Docker是什么?  Docker是一种容器技术,它能够将应用及其依赖环境打包,方便大规模的弹性部署,应用被容器化后在宿主机上的结构层次如下图所示,自下而上依次为:Infrastructure:宿主机硬件,如CPU、内存、磁盘和网卡等,可以是物理机或者VM虚拟机等;Host OS:宿主机的操作系统;Docker:Docker后台进程,负责处理客户端的命令/API请求;Containe...

2019-04-13 16:52:23 150

转载 权限模型 --- RBAC模型

RBAC模型  RBAC(Role-Based Access Control)基于角色的访问控制:引入角色的概念,将用户和权限解耦,避免每加入一个用户添加众多权限;一个用户可以同时有一个或多个角色;每个角色拥有一组权限,当用户有多个角色时,其拥有的权限为多个角色权限的并集;参考:https://www.uisdc.com/100-solutions-for-character-p...

2019-04-03 23:19:53 262

原创 跨域请求及解决方案

跨域请求  跨域请求是指当前发起请求的域与该请求指向的资源所在的域不一样,只有当协议+域名+端口三者均相同时才认为是同域。例如,aaa.com 的网站发起一个URL为bbb.com/pay/purchase 的 Ajax 请求,该请求即为跨域请求;存在问题  跨域请求可能导致CSRF攻击,因此出于安全方面的考虑,浏览器通常会对跨域请求进行限制;解决方案方案1: JSONP(废弃) ...

2019-04-02 20:07:48 333

原创 Broken pipe问题分析

现象  应用程序与HiveServer2建立了连接池,用户在使用应用服务时,后端出现Broken pipe的异常堆栈:[ERROR][2019-03-29T15:19:30.599+0800][AdhocHiveSQLHandler.java:57] _undef||traceid=645949405c9dc6ff1aca0f0905f64c02||spanid=081006710e526dd...

2019-03-30 11:16:00 6213

空空如也

空空如也

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

TA关注的人

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