5 杭州周煜

尚未进行身份认证

熟悉php,c,go,python,喜欢技术,乐于交友

等级
TA的排名 7w+

令牌桶限流思路分享(PHP+Redis实现机制)

一、场景描述在开发接口服务器的过程中,为了防止客户端对于接口的滥用,保护服务器的资源,通常来说我们会对于服务器上的各种接口进行调用次数的限制。比如对于某个用户,他在一个时间段(interval)内,比如1分钟,调用服务器接口的次数不能够大于一个上限(limit),比如说100次。如果用户调用接口的次数超过上限的话,就直接拒绝用户的请求,返回错误信息。服务接口的流量控制策略:分...

2019-08-20 14:00:17

GRPC中设置client的超时时间(golang)

超时建立连接主要就2函数Dail和DialContext。//Dialcreatesaclientconnectiontothegiventarget.funcDial(targetstring,opts...DialOption)(*ClientConn,error){returnDialContext(context.Backgrou...

2019-08-16 10:23:32

淘宝从几百到千万级并发的十四次架构演进之路!

1、概述本文以淘宝作为例子,介绍从一百个并发到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则。2、基本概念在介绍架构之前,为了避免部分读者对架构设计中的一些概念不了解,下面对几个最基础的概念进行介绍:分布式系统中的多个模块在不同服务器上部署,即可称为分布式系统,如Tomcat和数据...

2019-08-16 09:17:21

分布式及负载均衡解决方案

一、问题域nginx、lvs、keepalived、f5、DNS轮询,每每提到这些技术,往往讨论的是接入层的这样几个问题:1)可用性:任何一台机器挂了,服务受不受影响2)扩展性:能否通过增加机器,扩充系统的性能3)反向代理+负载均衡:请求是否均匀分摊到后端的操作单元执行二、上面那些名词都是干嘛的由于每个技术人的背景和知识域不同,上面那些名词缩写(运维的同学再熟悉不过了...

2019-08-16 09:15:15

golang中gRpc的安装及使用

1、(1)ProtocolBuffers(简称protobuf)用于结构化数据和字节码之间互相转换(即实现从结构体转换为字节流以及从字节流转换为结构体),一旦你定义了自己的报文格式(message),你就可以运行ProtocolBuffer编译器,将你的.proto文件编译成特定语言的类。(2)proto里的message,pb.go里的结构体(带方法)proto里的service,pb....

2019-08-13 13:32:39

使用 Gomock 进行单元测试

前言在实际项目中,需要进行单元测试的时候。却往往发现有一大堆依赖项。这时候就是Gomock大显身手的时候了Gomock是Go语言的一个mock框架,官方的那种

2019-08-09 09:08:06

联合索引的最左前缀匹配原则

假设数据表T(a,b,c)rowid为物理位置rowidabc(1)111(2)2113(3)2214(4)133(5)2312(6)125(7)239(8)122(9)136(10)2211(11)228(12)117(13)2315(14)114(15)2...

2019-07-31 22:31:12

sql优化的几种方式

一、为什么要对SQL进行优化我们开发项目上线初期,由于业务数据量相对较少,一些SQL的执行效率对程序运行效率的影响不太明显,而开发和运维人员也无法判断SQL对程序的运行效率有多大,故很少针对SQL进行专门的优化,而随着时间的积累,业务数据量的增多,SQL的执行效率对程序的运行效率的影响逐渐增大,此时对SQL的优化就很有必要。二、SQL优化的一些方法1.对查询进行优化,应尽量避免全表扫描...

2019-07-31 20:13:13

yum 安装php扩展

搜索对应php版本的扩展yumlist|grepphp72w*安装具体扩展yum-yinstallphp72-php-pecl-redis4.x86_64

2019-07-15 09:25:38

PHP7与php5

php在2015年12月03日发布了7.0正式版,带来了许多新的特性,以下是不完全列表: 性能提升:PHP7比PHP5.6性能提升了两倍。Improvedperformance:PHP7isuptotwiceasfastasPHP5.6 全面一致的64位支持。Consistent64-bitsupport 以前的许多致命错误,现在改成抛出异...

2019-07-04 23:07:36

linux防火墙

当你开启一个tcp服务,却发现访问不了,那么你得考虑下是否是防火墙拦截了,目前,最常见的拦截有以下几种情况:服务器本机防火墙拦截 服务器供应商拦截(阿里云,腾讯云安全组)服务器本机拦截,可通过防火墙管理软件,开端口,或者直接关闭防火墙进行解决(不建议):例如centos7下,防火墙管理软件为firewalld.基础命令为:systemctlstartfirewalld;#...

2019-07-04 23:03:54

linux命令基础

linux命令存储以下位置:/bin(指向/usr/bin)目录,包含基本的用户命令,默认全体用户都可使用,例如curl,ls命令 /sbin(指向/usr/sbin),/usr/local/sbin,存放需要root权限的命令以及工具,默认root用户使用,例如ip,halt命令 /usr/local/bin给用户放置自己的可执行程序的地方,不会被系统升级覆盖 /usr/local/...

2019-07-04 22:57:09

Swoole4 协程与 Go 协程有哪些区别

Swoole4与Go协程在设计上是完全一致的,均是stackful的,每个协程拥有独立的运行栈。协程调度器使用汇编代码,切换协程上下文。Swoole4与Go协程在实现细节上存在一些差异。主要是以下几方面:多线程Swoole4的协程调度器是单线程的,因此不存在数据同步问题,同一时间只会有一个协程在运行 Go协程调度器是多线程的,同一时间可能会有多个协程同时执行因此在Swoole4协程...

2019-06-04 18:25:41

综合解释swoole的协程原理

这是我看来网上很多人的文章,综合理解的结果,如果有错的地方,欢迎留言指出,希望大家一起前进,不惜勿喷协程的执行顺序先来看看基础的例子:go(function(){echo"hellogo1\n";});echo"hellomain\n";go(function(){echo"hellogo2\n";});go()是\...

2019-06-04 18:20:23

Docker 发布自己的镜像

Dockerhub注册用户到官网注册账号:https://hub.docker.com/注册账号后,登录Dockerhub,创建一个仓库,用来上传我们的镜像。15.png16.png(仓库名和镜像名需要和你本地要上传的镜像一致)在本地Linux登录docker:dockerlogin输入用户名密码进行登录:11.png登出操作:...

2019-05-31 17:51:40

检查运行中的镜像

检查运行中的镜像现在你已经运行了一个docker容器,让我们来看下正在运行的容器。使用dockerps命令可以查看所有正在运行中的容器列表,使用dockerinspect命令我们可以查看更详细的关于某一个容器的信息。目标:查找某一个运行中容器的id,然后使用dockerinspect命令查看容器的信息。提示:可以使用镜像id的前面部分,不需要完整的id。正确的...

2019-05-31 17:02:48

运行新的镜像

运行新的镜像ok,到现在为止,你已经建立了一个完整的、自成体系的docker环境,并且安装了ping命令在里面。它可以在任何支持docker环境的系统中运行啦!(译者按:是不是很神奇呢?)让我们来体验一下吧!目标:在新的镜像中运行pingwww.google.com命令。提示:一定要使用新的镜像名learn/ping来运行ping命令。(译者按:最开始下载的learn/tu...

2019-05-31 17:01:11

保存对容器的修改

保存对容器的修改当你对某一个容器做了修改之后(通过在容器中运行某一个命令),可以把对容器的修改保存下来,这样下次可以从保存后的最新状态运行该容器。docker中保存状态的过程称之为committing,它保存的新旧状态之间的区别,从而产生一个新的版本。目标:首先使用dockerps-l命令获得安装完ping命令之后容器的id。然后把这个镜像保存为learn/ping。提示:...

2019-05-31 16:58:37

在容器中安装新的程序

在容器中安装新的程序下一步我们要做的事情是在容器里面安装一个简单的程序(ping)。我们之前下载的tutorial镜像是基于ubuntu的,所以你可以使用ubuntu的apt-get命令来安装ping程序:apt-getinstall-yping。备注:apt-get命令执行完毕之后,容器就会停止,但对容器的改动不会丢失。目标:在learn/tutorial镜像里面安装p...

2019-05-31 16:55:50

在docker容器中运行hello world!

在docker容器中运行helloworld!docker容器可以理解为在沙盒中运行的进程。这个沙盒包含了该进程运行所必须的资源,包括文件系统、系统类库、shell环境等等。但这个沙盒默认是不会运行任何程序的。你需要在沙盒中运行一个进程来启动某一个容器。这个进程是该容器的唯一进程,所以当该进程结束的时候,容器也会完全的停止。目标:在我们刚刚下载的镜像中输出"helloword"。...

2019-05-31 16:52:58

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。