Tengine

一个秒杀系统设计详解

冷暖自知 提交于 2021-02-13 15:30:57
一些数据: 大家还记得2013年的小米秒杀吗?三款小米手机各11万台开卖,走的都是大秒系统,3分钟后成为双十一第一家也是最快破亿的旗舰店。经过日志统计,前端系统双11峰值有效请求约60w以上的QPS ,而后端cache的集群峰值近2000w/s、单机也近30w/s,但到真正的写时流量要小很多了,当时最高下单减库存tps是红米创造,达到1500/s。 热点隔离: 秒杀系统设计的第一个原则就是将这种热点数据隔离出来,不要让1%的请求影响到另外的99%,隔离出来后也更方便对这1%的请求做针对性优化。针对秒杀我们做了多个层次的隔离: 业务隔离。 把秒杀做成一种营销活动,卖家要参加秒杀这种营销活动需要单独报名,从技术上来说,卖家报名后对我们来说就是已知热点,当真正开始时我们可以提前做好预热。 系统隔离。 系统隔离更多是运行时的隔离,可以通过分组部署的方式和另外99%分开。秒杀还申请了单独的域名,目的也是让请求落到不同的集群中。 数据隔离。 秒杀所调用的数据大部分都是热数据,比如会启用单独cache集群或MySQL数据库来放热点数据,目前也是不想0.01%的数据影响另外99.99%。 当然实现隔离很有多办法,如可以按照用户来区分,给不同用户分配不同cookie,在接入层路由到不同服务接口中;还有在接入层可以对URL的不同Path来设置限流策略等。服务层通过调用不同的服务接口

24 目标识别MobileNet

為{幸葍}努か 提交于 2021-02-08 02:44:59
下载 代码和MobileNet训练模型可以从以下位置下载: https://github.com/djmv/MobilNet_SSD_opencv https://github.com/chuanqi305/MobileNet-SSD http://www.ebenezertechs.com/mobilenet-ssd-using-opencv-3-4-1-deep-learning-module-python/ https://github.com/djmv/MobilNet_SSD_opencv 网友加速 在Raspberry Pi上设置TensorFlow对象检测API的教程 https://github.com/EdjeElectronics/TensorFlow-Object-Detection-on-the-Raspberry-Pi#6-detect-objects https://github.com/EdjeElectronics/TensorFlow-Object-Detection-on-the-Raspberry-Pi https://www.youtube.com/watch?v=gGqVNuYol6o&feature=youtu.be https://blog.csdn.net/weixin_43558453/article/details

项目实战2.3-Nginx的“远方表哥”—Tengine

亡梦爱人 提交于 2021-02-01 01:56:21
本文收录在 Linux运维企业架构实战系列   今天想起当初研究nginx反向代理负载均衡时,nginx自身的upstream后端配置用着非常不舒服; 当时使用的淘宝基于nginx二次开发的Tengine,今天总结一下。 1、认识Tengine 1.1 介绍 Tengine是由淘宝网发起的Web服务器项目。它 在Nginx的基础 上,针对大访问量网站的需求,添加了很多高级功能和特性。它的目的是打造一个高效、安全的Web平台。 Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。 它的最终目标是打造一个高效、稳定、安全、易用的Web平台。 从2011年12月开始,Tengine成为一个开源项目。 现在,它由Tengine团队开发和维护。Tengine团队的核心成员来自于淘宝、搜狗等互联网企业。 1.2 功能 继承Nginx-1.6.2的所有特性, 兼容Nginx的配置 ; 动态模块加载(DSO)支持 。加入一个模块不再需要重新编译整个Tengine; 支持SO_REUSEPORT选项, 建连性能 提升为官方nginx的三倍; 支持SPDY v3协议,自动检测同一端口的SPDY请求和HTTP请求; 流式上传到HTTP后端服务器或FastCGI服务器,大量减少机器的I/O压力; 更加强大的负载均衡能力 ,包括一致性hash模块、会话保持模块

Tengine/Nginx 安装

独自空忆成欢 提交于 2021-02-01 01:42:46
一.Tengine是什么 简介 Tengine是由淘宝网发起的Web服务器项目。它在 Nginx 的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如 淘宝网 , 天猫商城 等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。 从2011年12月开始,Tengine成为一个开源项目,Tengine团队在积极地开发和维护着它。Tengine团队的核心成员来自于 淘宝 、 搜狗 等互联网企业。Tengine是社区合作的成果,我们欢迎大家 参与其中 ,贡献自己的力量。 特性 继承Nginx-1.6.2的所有特性,兼容Nginx的配置; 动态模块加载(DSO) 支持。加入一个模块不再需要重新编译整个Tengine; 支持SO_REUSEPORT选项 ,建连性能提升为 官方nginx的三倍; 同时支持 HTTP v2协议 和 SPDY v3协议 , 可同时使用两种协议 ; 流式上传 到HTTP后端服务器或FastCGI服务器,大量减少机器的I/O压力; 更加强大的负载均衡能力,包括 一致性hash模块 、 会话保持模块 , 还可以对后端的服务器进行主动健康检查 ,根据服务器状态自动上线下线,以及 动态解析upstream中出现的域名 ; 输入过滤器机制 支持。通过使用这种机制Web应用防火墙的编写更为方便;

Openresty 与 Tengine

纵然是瞬间 提交于 2021-01-13 19:04:48
Openresty和Tengine基于 Nginx 的两个衍生版本,某种意义上他们都和淘宝有关系,前者是前淘宝工程师agentzh主导开发的,后者是淘宝的一个开源项目; Openresty的最大特点是引入了ngx_lua模块,支持使用lua开发插件; Tengine的特点是融入了因淘宝自身的一些业务带来的新功能; Tengine 简介 tengine官方网站: http://tengine.taobao.org/index_cn.html 在 Nginx官方版本的基础上增加的一些定制模块如下: 1、支持动态加载模块:通过加载so文件实现,不用再重新编译整个项目了,配置如下: dso { load ngx_http_lua_module.so; load ngx_http_memcached_module.so; } 2、ngx_proc_daytime_module模块,这个模块允许开一个独立的服务进程,该模块本身并未实现具体的业务逻辑,而是构建了一个TCP Server框架,等待开发者来实现自己的业务; 3、ngx_http_concat_module模块,用于合并多个文件的响应; 4、ngx_http_upstream_session_sticky_module模块,该模块是一个负载均衡模块,通过cookie实现客户端与后端服务器的会话保持,

Centos下Nginx的安装

馋奶兔 提交于 2020-12-16 10:21:26
Ngnix安装 采用淘宝的Nginx版本: tengine yum install -y pcre-devel openssl-devel groupadd www-data useradd -s /sbin/nologin -g www-data www-data cd /usr/local/src wget http://tengine.taobao.org/download/tengine-2.1.0.tar.gz tar -zxvf tengine-2.1.0.tar.gz cd tengine-2.1.0 ./configure –prefix=/usr/local/nginx \ –user=www-data \ –group=www-data \ –with-http_gzip_static_module \ –with-http_realip_module \ –with-http_stub_status_module \ –with-http_concat_module \ –with-pcre make && make install 配置 Tengine ,设置 tengine 自动启动 #vim /etc/rc.d/init.d/nginx # 编辑启动文件添加下面内容 #!/bin/bash # nginx Startup script for the

浅谈高可用测试

守給你的承諾、 提交于 2020-11-22 15:29:50
前言 现今的互联网产品越来越注重可靠性,尤其是在生产环境中使用的系统,对高可用性都有一定的要求。而作为产品的提供方,在交付产品之前,也会对高可用进行验收测试。近期跟进过两个产品曾有高可用测试的需求,在此简单的总结分享下。 在介绍产品之前,先简单的介绍下高可用和高可用测试: 高可用:指的是系统如何保证比较高的服务可用率。在系统的某个部分因为各种原因而失效时,能保证系统整体的服务正常运行。 高可用测试:通过模拟系统出现异常的情况,验证系统是否能正常提供服务(或降级提供服务),并验证系统在异常恢复后,能否恢复至异常出现之前的运行状态。 产品A:云计算PAAS层组件 产品A为云计算的PAAS层组件,各服务部署在云主机以及物理机上,大致架构如下: 从产品架构来看,对A产品做高可用测试,需要分别确保LVS集群和Tengine集群的高可用。因此,需要根据LVS集群和Tengine集群的原理以及运行特性,分别制定高可用测试方案 LVS运行物理机上,OSPF协议实现多节点互备,因此设计高可用测试方案如下: 从网络方面验证高可用,配置iptables规则实现端口丢包,模拟网络不可用的情况 在进程方面验证高可用,分别使用stop、kill -9、kill -19模拟进程停止、崩溃、假死时的情况 在机器方面验证高可用,通过关机、重启模拟物理机宕机时的情况 Tengine运行在云主机上

三分钟读懂TT猫分布式、微服务和集群之路

拈花ヽ惹草 提交于 2020-10-31 18:53:31
针对新手入门的普及,有过大型网站技术架构牛人路过,别耽误浪费了时间,阅读之前,请确保有一定的网络基础,熟练使用Linux,浏览大概需要3-5分钟的时间,结尾有彩蛋。 目录 分布式 微服务 负载均衡集群 高可用集群 弹性云 故障转移 分布式 小马正在经营一个在线购物网站,名叫TT猫,有商品管理、订单管理、用户管理、支付管理、购物车等等模块,每个模块部署到独立的云服务主机。 现在,程序员小明同学浏览TT猫,想买一款牛逼的cherry机械键盘来提升自己的工作效率。小明打开TT猫首页、搜索商品、浏览详情以及评论、添加购物车、下单、支付等等一系列操作。小明同学一气呵成,流畅的完成了购物,当然也花费了不少银子。 但是系统又是如何对这一系列操作,如下图错综复杂的调用关系(自行忽略部分细节)。用户看不见,模不着,整个下单过程却行走在网络之间。 TT猫把所有功能模块分布部署在不同的地方,最终完成了用户一系列的请求,这大概就是一个分布式系统吧。 微服务 博主认为微服务是一种架构,也是在分布式范畴之内的。多微才叫微?在分布式系统中,微服务更加强调单一职责、轻量级通信(HTTP)、独立性并且进程隔离。 好了,没什么好说的了,实践出真知,建议大家多多了解 spring-cloud相关微服务组件。 TT猫,每年都会搞一些活动,比如女生最爱的光棍节(双11),夜深人静的时候会瞬间涌入大量用户

nginx限制恶意IP处理方法

孤者浪人 提交于 2020-10-27 05:02:17
思考了几种方案,最终考虑使用ip黑名单的方式: 处理方法: 一、nginx黑名单方式: 1、过滤日志访问API接口的IP,统计每10分钟调用超过100次的IP,直接丢进nginx的访问黑名单 2、具体步骤: 编写shell脚本: 复制代码 vim /shell/nginx_cutaccesslog.sh #!/bin/bash log_path=/xxx/nginx/logs date= date -d "10 min ago" +%Y%m%d-%H:%M:%S nginxpid= cat ${log_path}/nginx.pid cd ${log_path} #过滤access.log中正常访问API接口并在10分钟(下面是日志切割,再做个定时任务每10分钟执行一次,就可以实现了)内访问量最高的30个IP,取值如果此IP访问量大于100次,则把此IP放入黑名单 cat access.log | grep sendCheckCode | grep -v 403 | awk '{print $2}'|sort|uniq -c | sort -k1 -n | tail -30 | awk '{if($1>100) print "deny "$2";"}' > ../conf/denyip.conf #日志切割,做定时任务,每10分钟执行一次 mv ${log_path}/access

Jumpserver集群部署笔记:(一)系统基础环境配置

倾然丶 夕夏残阳落幕 提交于 2020-10-19 08:48:56
1、集群组网信息 序号 主机名 IP地址 操作系统版本 1 devops01 10.255.200.1 CentOS 7.8.2003 2 devops02 10.255.200.2 CentOS 7.8.2003 3 devops03 10.255.200.3 CentOS 7.8.2003 各模块高可用方案如下: Tengine 3节点通过keepalived切换 Jumpserver、koko、guacamole 独立3节点通过tengine负载 Mariadb galera 3节点集群 Redis sentinel 3节点哨兵模式实现主从切换,keepalived实现VIP切换 Keepalived 自身配置了状态切换邮件通知 以下基础环境配置,无特殊说明的情况下表示集群中3台主机均需执行相同配置 2、安装操作系统 操作系统安装主要包括UEFI启动配置,磁盘冗余配置,系统时区配置,系统磁盘分区等配置。 序号 挂载点 主要用途 1 /sas 安装软件 2 /ssd 保存数据库数据 3、配置网卡聚合 3.1 交换机端使用动态聚合配置,服务器端使用mode 4 (802.3ad),实现链路负载分担。 # 交换机端配置示例(H3C) interface Bridge-Aggregation10 port access vlan 100 link-aggregation mode