12 2019 档案

token 的设计方案
摘要:网上关于移动客户端与服务器数据传输之间的 token 的细节使用好像都没有详细的说明,基本都是一笔带过。对于简简单单的加入一个固定的参数 token,其实是很容易被抓包的。 介绍 token 是登录之后服务器返回的一段加密字符串(加密算法自己与后台商量如何加解密),存储到本地。在客户端请求服务端数据 阅读全文

posted @ 2019-12-31 17:54 ExplorerMan 阅读(1769) 评论(0) 推荐(0)

单点登录(SSO)看这一篇就够了
摘要:背景 在企业发展初期,企业使用的系统很少,通常一个或者两个,每个系统都有自己的登录模块,运营人员每天用自己的账号登录,很方便。 但随着企业的发展,用到的系统随之增多,运营人员在操作不同的系统时,需要多次登录,而且每个系统的账号都不一样,这对于运营人员 来说,很不方便。于是,就想到是不是可以在一个系统 阅读全文

posted @ 2019-12-31 17:40 ExplorerMan 阅读(478) 评论(0) 推荐(0)

微服务认证鉴权的四种方案
摘要:在微服务流行的时代,认证鉴权方法总体上和之前差不多,只是由于场景架构不同,适用于它的方案也有不同。 David Borsos 在伦敦的微服务大会上提出了四种方案: 1. 单点登录(SSO) 这种方案意味着每个面向用户的服务都必须与认证服务交互,这会产生大量非常琐碎的网络流量和重复的工作,当动辄数十个 阅读全文

posted @ 2019-12-31 17:40 ExplorerMan 阅读(5329) 评论(0) 推荐(0)

Golang中的面向对象继承
摘要:Golang的面向对象机制与Smalltalk或者Java等传统面向对象的编程语言不同。传统面向对象编程语言的一个重要特性是继承机制。因为继承机制支持在关联对象间进行代码复用和数据共享。继承机制曾在代码复用和数据共享的设计模式占据主导地位,但是目前组合这一古老的技术重新焕发了活力。 本篇文章转自Ti 阅读全文

posted @ 2019-12-31 16:14 ExplorerMan 阅读(759) 评论(0) 推荐(0)

golang中的结构体匿名成员
摘要:最近在开发caddy的插件, 碰到了很多以前不怎么注意的地方, 先重点记录下几个点. 写插件比较追求的一点是: 如何不破坏原有的体系而达到想要的效果. 这个确实有点难… 结构体匿名成员 有关结构体匿名成员在《Effective Go》中的embedding一节讲的很详细, 一言一蔽之: 另一种形式的 阅读全文

posted @ 2019-12-31 15:31 ExplorerMan 阅读(392) 评论(0) 推荐(0)

GRPC中设置client的超时时间(golang)
摘要:在使用grpc的时候遇到了一个问题: 如何设置client端的超时时间? 网上搜了一大圈, 没有太明显的例子. 这里我们先看下看看grpc的helloworld例子: client 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 func mai 阅读全文

posted @ 2019-12-30 11:55 ExplorerMan 阅读(4564) 评论(0) 推荐(0)

今日头条用Go建千亿级微服务 分析详细,适合新手理解概念[转载的]
摘要:今日头条当前后端服务超过80%的流量是跑在 Go 构建的服务上。微服务数量超过100个,高峰 QPS 超过700万,日处理请求量超过3000亿,是业内最大规模的 Go 应用。 Go 构建微服务的历程 在2015年之前,头条的主要编程语言是 Python 以及部分 C++。随着业务和流量的快速增长,服 阅读全文

posted @ 2019-12-28 19:12 ExplorerMan 阅读(1411) 评论(1) 推荐(1)

在Python中使用gRPC的方法示例【h】
摘要:本文介绍了在Python中使用gRPC的方法示例,分享给大家,具体如下: 使用Protocol Buffers的跨平台RPC系统。 安装 使用 pip ? 1 2 pip install grpcio pip install grpcio-tools googleapis-common-protos 阅读全文

posted @ 2019-12-28 18:53 ExplorerMan 阅读(581) 评论(0) 推荐(0)

grpc| python 实战 grpc【h】
摘要:title: grpc| python 实战 grpc description: 只要代码可以跑起来, 很多难题都会迎刃而解. so, keep coding and stay hungry. 之前用 swoole 写 server 时就接触过 protobuf, 本来以为基于 protobuf 的 阅读全文

posted @ 2019-12-28 18:49 ExplorerMan 阅读(552) 评论(0) 推荐(0)

gRPC Python 入门到生产环境
摘要:所有的代码在 https://github.com/xsren/learning_record/tree/master/grpc,欢迎star。 一、先了解几个概念 RPC RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底 阅读全文

posted @ 2019-12-28 18:35 ExplorerMan 阅读(737) 评论(0) 推荐(0)

深入RPC分布式原理
摘要:前面几节讲的都是单机 RPC 服务的模式,无论是多线程也好多进程也好,它们都只能算是单点的设计。现代企业的关键性 RPC 服务是绝不可以只使用单点部署的。本节我们要对 RPC 服务进行分布式化,使得服务可以容忍个别节点故障仍能继续对外提供服务。 客户端 当 RPC 服务部署在多个节点上时,客户端得到 阅读全文

posted @ 2019-12-28 18:19 ExplorerMan 阅读(455) 评论(0) 推荐(0)

Google Protobuf简明教程
摘要:Protobuf是什么 Protobuf实际是一套类似Json或者XML的数据传输格式和规范,用于不同应用或进程之间进行通信时使用。通信时所传递的信息是通过Protobuf定义的message数据结构进行打包,然后编译成二进制的码流再进行传输或者存储。 Protobuf的优点 相比较而言,Proto 阅读全文

posted @ 2019-12-28 11:47 ExplorerMan 阅读(383) 评论(0) 推荐(0)

gRPC详解
摘要:gRPC是什么? gRPC是什么可以用官网的一句话来概括 A high-performance, open-source universal RPC framework 所谓RPC(remote procedure call 远程过程调用)框架实际是提供了一套机制,使得应用程序之间可以进行通信,而且 阅读全文

posted @ 2019-12-28 11:47 ExplorerMan 阅读(2520) 评论(0) 推荐(1)

nginx error_page配置
摘要:今天偶然访问了一个线上应用不存在的url,应用报错,出现了乱码。 乱码是从nginx转发的tomcat报出来的。tomcat默认处理HTML是以ISO-8859-1处理的,所以就产生了乱码。 解决这个error_page的途径我尝试了两种方法: 1、让tomcat返回正常的非乱码的error_pag 阅读全文

posted @ 2019-12-24 21:06 ExplorerMan 阅读(3138) 评论(0) 推荐(0)

golang中最大协程数的限制(线程)
摘要:golang中最大协程数的限制 golang中有最大协程数的限制吗?如果有的话,是通过什么参数控制呢?还是通过每个协程占用的资源计算? 通过channel控制协程数的就忽略吧。 以我的理解,计算机资源肯定是有限的,所以goroutine肯定也是有限制的,单纯的goroutine,一开始每个占用4K内 阅读全文

posted @ 2019-12-24 15:24 ExplorerMan 阅读(6728) 评论(0) 推荐(1)

Redis 4.0.10 文档(分布式锁)
摘要:Redis分布式锁 在许多环境中,分布式锁是一种非常有用的原语,其中不同的进程必须以互斥的方式与共享资源一起运行。 有许多库和博客文章描述了如何使用Redis实现DLM(分布式锁管理器),但是每个库都使用不同的方法,而且许多库使用的是一种简单的方法,与稍微复杂的设计相比,可以获得较低的保障。 此页面 阅读全文

posted @ 2019-12-23 21:31 ExplorerMan 阅读(533) 评论(0) 推荐(0)

Redis 实现限流的三种方式
摘要:项目中用到了限流,受限于一些实现方式上的东西,手撕了一个简单的服务端限流器。 服务端限流和客户端限流的区别,简单来说就是: 1)服务端限流 对接口请求进行限流,限制的是单位时间内请求的数量,目的是通过有损来换取高可用。 例如我们的场景是,有一个服务接收请求,处理之后,将数据bulk到Elastics 阅读全文

posted @ 2019-12-23 21:10 ExplorerMan 阅读(7037) 评论(0) 推荐(0)

Redis 漏斗限流 (redis-cell)
摘要:上述的漏斗限流算法,在Redis的模块中已经内置实现了一个,具体介绍请参见Github redis-cell详细介绍 笔者安装在MacOS上,基本没有问题: # 下载mac版本安装包https://github.com/brandur/redis-cell/releases# 解压tar -zxf 阅读全文

posted @ 2019-12-23 17:25 ExplorerMan 阅读(1705) 评论(0) 推荐(0)

python分布式环境下的限流器
摘要:项目中用到了限流,受限于一些实现方式上的东西,手撕了一个简单的服务端限流器。 服务端限流和客户端限流的区别,简单来说就是: 1)服务端限流 对接口请求进行限流,限制的是单位时间内请求的数量,目的是通过有损来换取高可用。 例如我们的场景是,有一个服务接收请求,处理之后,将数据bulk到Elastics 阅读全文

posted @ 2019-12-23 17:23 ExplorerMan 阅读(279) 评论(0) 推荐(0)

架构设计之「服务限流」
摘要:上一篇我们聊过了架构设计中的「服务隔离」模式,今天我们继续来探索一下在分布式系统架构中的另一个常用的设计:服务限流。 那么,什么是「服务限流」呢? 在解释「服务限流」之前,我们来看一下前些时间网上很火的一个段子,说的是新浪微博的一名工程师正在家里办婚礼,突然接到公司的电话要紧急处理线上流量激增的问题 阅读全文

posted @ 2019-12-23 17:12 ExplorerMan 阅读(195) 评论(0) 推荐(0)

Ocelot + Consul实践
摘要:关于Consul(https://www.consul.io)是一个分布式,高可用,支持多数据中心的服务发现和配置共享的服务软件,由 HashiCorp 公司用 Go 语言开发, 基于 Mozilla Public License 2.0 的协议进行开源。 在Consul的文档上,Consul 支持 阅读全文

posted @ 2019-12-23 16:42 ExplorerMan 阅读(1021) 评论(0) 推荐(0)

分布式链路追踪(Tracing)系统 – Jaeger在Golang中的使用
摘要:先从微服务说起 目录 [隐藏] 微服务 Tracing在微服务中的作用 为什么是Jaeger 安装 客户端 在单体应用中实现Tracing. 通过Grpc中间件使用 在业务代码中使用 通过Gin中间件中使用 结语 部署篇 使用Elasticsearch作为存储后端 相关文章 目录 [隐藏] 微服务 阅读全文

posted @ 2019-12-23 16:36 ExplorerMan 阅读(2158) 评论(0) 推荐(0)

微服务的时间和成本去哪儿了
摘要:为什么选择微服务? 虽然刘老师的说辞有点举重若轻,说的是因为执着和技术人的专研精神选择了微服务,甚至也对比和调研过,但是在只有四个人的团队里,连一张披萨都没有凑齐的前提下就“冒然”选型,显然不能让我信服。可能是刘大佬有比较充分的调研和把握,或者说有一定的技术自信。否则换成我,我是无论如何不敢带着四个 阅读全文

posted @ 2019-12-23 14:33 ExplorerMan 阅读(232) 评论(0) 推荐(0)

nginx+keepalived高可用及双主模式【h】
摘要:高可用有2中方式。 1、Nginx+keepalived 主从配置 这种方案,使用一个vip地址,前端使用2台机器,一台做主,一台做备,但同时只有一台机器工作,另一台备份机器在主机器不出现故障的时候,永远处于浪费状态,对于服务器不多的网站,该方案不经济实惠。 2、Nginx+keepalived 双 阅读全文

posted @ 2019-12-19 15:28 ExplorerMan 阅读(602) 评论(0) 推荐(0)

修改ARP缓存表大小
摘要:在下发Mininet的ARP缓存表表项时,出现了如下的错误信息: SIOCSARP: No buffer space available 这是由于ARP表是缓存在内存中的,超过了系统对ARP缓存表大小的限制,需要修改如下的文件:/proc/sys/net/ipv4/neigh/default/gc_ 阅读全文

posted @ 2019-12-19 11:18 ExplorerMan 阅读(1720) 评论(0) 推荐(0)

linux的arp表满导致同网段无法ping通
摘要:由于历史原因,有一个网段子网设置非常大10.0.0.0/21,8个C地址段为一个子网。 linux内核默认arp表大小为1024,导致一台监控机器arp表溢出,同时导致日志输出速率超出限制,无法输出日志。 解决方法: 调整内核参数 1、vi /etc/sysctl.conf 增加或修改如下项目: n 阅读全文

posted @ 2019-12-18 20:08 ExplorerMan 阅读(1291) 评论(0) 推荐(0)

Docker底层基石namespace与cgroup
摘要:Docker底层基石namespace与cgroup 容器本质上是把系统中为同一个业务目标服务的相关进程合成一组,放在一个叫做namespace的空间中,同一个namespace中的进程能够互相通信,但看不见其他namespace中的进程。每个namespace可以拥有自己独立的主机名、进程ID系统 阅读全文

posted @ 2019-12-17 11:56 ExplorerMan 阅读(686) 评论(0) 推荐(0)

kubectl 常用命令
摘要:查看 查看所有kubelet节点kubectl get nodeskubectl get nodes -o wide --show-labels //可以看到所有节点的label 查看所有podkubectl get pods --all-namespaceskubectl get pods -o 阅读全文

posted @ 2019-12-17 11:55 ExplorerMan 阅读(564) 评论(0) 推荐(0)

Kubenetes里pod和service绑定的实现方式
摘要:我之前的文章 如何在Kubernetes里创建一个Nginx service介绍了如何创建一个Kubernetes pod和service,使用的方法是命令kubectl run。 本文介绍另一种方式,通过这种方式来学习Kubernetes里pod和对应的service是如何绑定的。 首先使用下面的 阅读全文

posted @ 2019-12-16 21:27 ExplorerMan 阅读(699) 评论(0) 推荐(0)

k8s删除pod一直处于terminating状态
摘要:我这里的pod是与nfs有关,nfs挂载有问题导致pod有问题,执行完删除命令以后看到pod一直处于terminating的状态。 这种情况下可以使用强制删除命令: kubectl delete pod [pod name] --force --grace-period=0 -n [namespac 阅读全文

posted @ 2019-12-16 20:27 ExplorerMan 阅读(880) 评论(0) 推荐(0)

docker镜像拉取总结
摘要:flannel# Copy tiller# Copy nginx-ingress# Copy defaultbackend# Copy kubernetes-dashboard# Copy metrics-server# Copy k8szk# Copy Other# k8s:# Copy 阅读全文

posted @ 2019-12-16 00:33 ExplorerMan 阅读(1235) 评论(0) 推荐(0)

linux下生成https的crt和key证书
摘要:今天在配置kibana权限设置时,kibana要求使用https链接。 于是总结了一下linux下openssl生成 签名的步骤: x509证书一般会用到三类文,key,csr,crt。 Key 是私用密钥openssl格,通常是rsa算法。 Csr 是证书请求文件,用于申请证书。在制作csr文件的 阅读全文

posted @ 2019-12-12 18:17 ExplorerMan 阅读(1039) 评论(0) 推荐(0)

Docker私有仓库Registry实战
摘要:参考: https://www.cnblogs.com/soar1688/p/6828329.html 1. 关于Registry 官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去。但是,有时候,我们的使用场景需要我们拥有一个 阅读全文

posted @ 2019-12-12 17:45 ExplorerMan 阅读(387) 评论(0) 推荐(0)

使用ReadtheDocs托管技术文档
摘要:ReadtheDocs Read the Docs非常适合写软件文档以及编写一些教程、电子书之类。对于一些一两篇文章就能写清楚的可以记笔记或写博客, 但是如果要写成一个系列的,不如写成一本书的形式,更美观,也更系统。 Read the Docs是一个在线文档托管系统, 你可以从各种版本控制系统中导入 阅读全文

posted @ 2019-12-11 20:50 ExplorerMan 阅读(1547) 评论(0) 推荐(0)

Docker,Docker Compose,Docker Swarm,Kubernetes之间的区别
摘要:最近在学习Docker容器,了解到一些相关的技术,像是Kubernetes,Docker-compose,Docker Swarm,分不清这些东西之间的区别,特意去研究了一下,分享一下,适合刚入门学习容器的同学了解。 DcokerDocker 这个东西所扮演的角色,容易理解,它是一个容器引擎,也就是 阅读全文

posted @ 2019-12-10 21:57 ExplorerMan 阅读(317) 评论(0) 推荐(0)

Docker Compose 部署Nginx服务实现负载均衡
摘要:Compose简介: Compose是Docker容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器,使用Docker Compose,不再需要使用shell脚本来启动容器。Compose通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义 阅读全文

posted @ 2019-12-10 21:46 ExplorerMan 阅读(1021) 评论(0) 推荐(0)

Dockerfile 指令 VOLUME 介绍
摘要:在介绍VOLUME指令之前,我们来看下如下场景需求: 1)容器是基于镜像创建的,最后的容器文件系统包括镜像的只读层+可写层,容器中的进程操作的数据持久化都是保存在容器的可写层上。一旦容器删除后,这些数据就没了,除非我们人工备份下来(或者基于容器创建新的镜像)。能否可以让容器进程持久化的数据保存在主机 阅读全文

posted @ 2019-12-10 17:15 ExplorerMan 阅读(2237) 评论(0) 推荐(0)

Docker---数据卷Volume的简单使用(使用DockerFile实现)
摘要:DockerFile是什么?Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。它们简化了从头到尾的流程并极大的简化了部署工作。Dockerfile从FROM命令开始,紧接着跟随者各种方法,命令和参数。其产出为一个新的可以用于创建容器的镜像。 实例: 提 阅读全文

posted @ 2019-12-10 15:42 ExplorerMan 阅读(1710) 评论(0) 推荐(0)

DockerFile语法【h】
摘要:DockerFile在我理解就是可以将所需要构建镜像的功能、组件都天前配置好,然后直接生成一个Image,而不是先生成镜像,再通过修改容器的方法来生成最终需要的镜像。 镜像的定值实际上就是定值每一层所需要添加的配置、文件,将每一层修改、安装、构建、操作的命令都写入一个脚本,最后使用脚本来构建镜像。D 阅读全文

posted @ 2019-12-10 15:37 ExplorerMan 阅读(615) 评论(0) 推荐(0)

Dockerfile语法梳理
摘要:Dockerfile语法 我们先来看一下上篇的 Dockerfile #获取base image FROM adoptopenjdk/openjdk8:latest #类似于执行 linux指令 RUN mkdir /opt/app #类似于linux copy指令 COPY demo-docker 阅读全文

posted @ 2019-12-10 15:10 ExplorerMan 阅读(536) 评论(0) 推荐(0)

windows 系统下安装docker
摘要:一、介绍 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。二、 使用docker toolbox安装docker 对于Windows用户来说, 阅读全文

posted @ 2019-12-10 15:02 ExplorerMan 阅读(453) 评论(0) 推荐(0)

Python unittest(PyUnit)单元测试框架
摘要:PyUnit(unittest) 是 Python 自带的单元测试框架,用于编写和运行可重复的测试。PyUnit 是 xUnit 体系的一个成员,xUnit 是众多测试框架的总称,PyUnit 主要用于进行白盒测试和回归测试。 如果你使用的是 2.1 或更早版本的 Python,则可能需要自行下载和 阅读全文

posted @ 2019-12-09 19:27 ExplorerMan 阅读(563) 评论(0) 推荐(0)

nginx deny 封IP
摘要:官方文档地址:http://nginx.org/en/docs/http/ngx_http_access_module.html#deny Syntax: deny address | CIDR | unix: | all;Default: —Context: http, server, locat 阅读全文

posted @ 2019-12-06 18:54 ExplorerMan 阅读(1402) 评论(0) 推荐(0)

harbor的安装和简单使用【h】
摘要:安装docker的私有仓库, 利用vmware提供的harbor工具, 参考Docker 私有仓库方案比较与搭建, Harbor安装 -- 企业级Registry仓库 2.2harborProject Harbor是由VMware公司中国团队为企业用户设计的Registry server开源项目,包 阅读全文

posted @ 2019-12-06 18:20 ExplorerMan 阅读(1114) 评论(0) 推荐(0)

Harbor的安装和基本使用
摘要:Harbor是一个开源的云原生registry工程。Harbor对开源的Docker Distribution扩进行了扩展,支持registries之间镜像的复制功能,而且还提供了一些高级的安全方面的功能,例如用户管理,访问控制和行为审计。详细的说明可以参照官网【1】。 Harbor的安装 通常,将 阅读全文

posted @ 2019-12-06 18:18 ExplorerMan 阅读(491) 评论(0) 推荐(0)

Harbor密码重置 密码修改 admin密码重置
摘要:Harbor密码重置harbor现在是使用postgresql 数据库了。不再支持mysql,网上有N多重置Mysql密码的,可以略过了。我密码错了默认的Harbor12345 修改为: RedHat12345 然后忘记密码死活登陆不上。卸载重新重新安装也不可以,原因是没有删除harbor的数据,h 阅读全文

posted @ 2019-12-06 18:05 ExplorerMan 阅读(3271) 评论(0) 推荐(0)

论consul正确的关闭姿势
摘要:最近在工作中发现一个有意思的现象,我用 ctrl+c 关闭本地 consul 的时候,报警系统并没有发出告警,说我的 node 异常,自己看了一下代码,发现 consul 的关闭还是有点猫腻的,仔细来讲讲 consul agent 在正常关闭的时候会向集群发送 leave 信令,宣告自己离开集群,那 阅读全文

posted @ 2019-12-05 19:10 ExplorerMan 阅读(2999) 评论(0) 推荐(0)

Metricbeat 轻量型指标采集器
摘要:一、介绍 用于从系统和服务收集指标。从 CPU 到内存,从 Redis 到 Nginx,Metricbeat 能够以一种轻量型的方式,输送各种系统和服务统计数据。 1、系统级监控,更简洁(轻量型指标采集器) 将 Metricbeat 部署到您所有的 Linux、Windows 和 Mac 主机,并将 阅读全文

posted @ 2019-12-05 15:49 ExplorerMan 阅读(868) 评论(0) 推荐(0)

consul reconnect_timeout
摘要:reconnect_timeout这将控制从集群中彻底删除发生故障的节点需要多长时间。默认值为72小时,建议将其设置为至少为节点或网络分区的预期可恢复的最大停机时间的两倍。警告:将此时间设置得太低可能会导致Consul服务器在扩展节点故障或分区过程中从法定数中删除,这可能会使群集恢复复杂化。该值是一 阅读全文

posted @ 2019-12-02 15:00 ExplorerMan 阅读(646) 评论(0) 推荐(0)

consul删除无效实例
摘要:consul删除无效实例删除无效服务删除无效节点删除无效服务http://127.0.0.1:8500/v1/agent/service/deregister/test-9c14fa595ddfb8f4c34c673c65b072bb test-9c14fa595ddfb8f4c34c673c65b 阅读全文

posted @ 2019-12-02 14:35 ExplorerMan 阅读(4202) 评论(0) 推荐(0)

Python3自动化运维之Fabric模版详解【h】
只有注册用户登录后才能阅读该文。

posted @ 2019-12-02 01:12 ExplorerMan 阅读(4) 评论(0) 推荐(1)

导航