![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
架构设计
ailinyingai
DevOps 搬砖人 干饭人
展开
-
全栈的思维
我和许多大小公司的负责人聊过,其中有一个某大厂出来在创业公司当技术负责人的传说有 20 年 Java 编程经验的工程师,对方说全栈就是前端后端数据库运维一锅端。听完我很诧异,连大厂的人都鲜有明白全栈的本质,也不奇怪小公司天天跟风喊着招全栈了。全栈不是一个岗位,全栈是一种思维,一种站在全局看问题的思维。与全栈相对的是另一种我们常见的思维,就是我不管你需求是什么,你原型图就是这么弄得,我已经做完了,...翻译 2019-12-16 13:31:21 · 577 阅读 · 0 评论 -
k8s
apiVersion: apps/v1kind: Deploymentmetadata: name: nginxspec: replicas: 3 selector: matchLabels: app-name: my-nginx template: metadata: labels: app-name: my-ngin...原创 2019-11-20 14:43:15 · 160 阅读 · 0 评论 -
策略模式
class Duck(object): # 上面使用继承,这里通用的使用参数方式,传入的就是操作工厂的类 def __init__(self, strategy=None): self.action = None self.count = 0 if strategy: # 指定策略,那么执行action就是用这...原创 2019-11-01 13:59:22 · 105 阅读 · 0 评论 -
故障异常
故障异常宕机宕机,一般情况下指的就是计算机主机出现意外故障而死机。其次,一些服务器例如数据库死锁也可以称为宕机,一些服务器的某些服务挂掉了,就可以这么说。coredump当程序出错而异常中断时,OS会把程序工作的当前状态存储成一个coredunmp文件。通常情况下coredump文件包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息等。缓存穿透/击穿/雪崩缓存穿透:...原创 2019-09-13 15:15:05 · 476 阅读 · 0 评论 -
服务治理
服务治理微服务微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间相互协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务和服务之间采用轻量级的通信机制相互沟通(通常是基于HTTP的Restful API).每个服务都围绕着具体的业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。服务发现服务发现是指使用一个注册中心来记录分布式系统中...原创 2019-09-13 15:53:06 · 252 阅读 · 0 评论 -
git总结
分支Branch管理:master 分支为主分支(保护分支),禁止直接在master上进行修改代码和提交;develop 分支为测试分支,所有开发完成需要提交测试的功能合并到该分支;feature 分支为开发分支,大家根据不同需求创建独立的功能分支,开发完成后合并到develop分支;fix 分支为bug修复分支,需要根据实际情况对已发布的版本进行漏洞修复;标签Tag管理:Tag采用三...原创 2019-09-18 09:36:01 · 105 阅读 · 1 评论 -
rabbitmq 教程
RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现。AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有很多公开标准(如 COBAR的 IIOP ,或者是 SOAP 等),但是在异步消息处理中却不是这样,只有大企业有一些商业实现(如微软的 MSMQ ,IBM 的 Websphere MQ 等),因此,在 2006 ...原创 2019-09-18 10:57:59 · 121 阅读 · 0 评论 -
go 的运维开发
使用 Go 语言开发的 Ops 工具HelmHelm 是 Kubernetes 的包管理器,它是查找、共享和使用为 Kubernetes 开发的软件的最佳方式。Helm Charts 可用于定义、安装和升级复杂的 Kubernetes 应用程序,它支持版本控制、共享和发布配置文件,不会让你迷失在意大利面式的代码中。GrafanaGrafana 是一个时间序列分析、监控和可视化平台。官方支持...原创 2019-10-06 20:45:58 · 4932 阅读 · 0 评论 -
python协程
from bs4 import BeautifulSoupimport timeimport aiohttpimport asyncioasync def do_task(domain, pageUrl): async with aiohttp.ClientSession() as session: async with session.request('GET'...原创 2019-10-07 23:26:30 · 61 阅读 · 0 评论 -
python 转 go
最开始我们的业务架构是 all Python,api 服务使用 flask + celery + redis + mongdb + 基于 thrift 的 C++服务, 处理简单的图片分类。转的原因:后面来了一个业务需求,对 api 的响应速度和 qps 都有要求,基本上是几千 qps 每秒。因为本身的业务逻辑比较简单,所以我们 profiling 了下,发现瓶颈在 Python 本身。我以前用...原创 2019-10-08 14:15:49 · 1120 阅读 · 0 评论 -
架构设计
架构设计高并发 (High Concurrency)由于分布式系统的问世,高并发(High Concurrency)通常是指通过设计保证系统能够同时并行处理很多请求。通俗来讲,高并发是指在同一个时间点,有很多用户同时的访问同一 API 接口或者 Url 地址。它经常会发生在有大活跃用户量,用户高聚集的业务场景中。高可用 (High Availability)高可用HA(High A...原创 2019-09-13 15:14:07 · 160 阅读 · 0 评论 -
系统开发
系统开发高内聚/低耦合高内聚指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。模块的内聚反映模块内部联系的紧密程度。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。一个完整的系统,模块与模块之间,尽可能的使其独立存在。通常程序结构中各模块的内聚程度越高,模块间的耦合程度就越低。过度...原创 2019-09-13 15:12:52 · 558 阅读 · 0 评论 -
责任链模式
开发一个应用时,多数时候我们都能预先知道哪个方法能处理某个特定请求。然而,情况并非总是如此。例如,想想任意一种广播计算机网络,例如最早的以太网实现(请参考网页[t.cn/RqrTp0Y])。在广播计算机网络中,会将所有请求发送给所有节点(简单起见,不考虑广播域),但仅对所发送请求感兴趣的节点会处理请求。加入广播网络的所有计算机使用一种常见的媒介相互连接,比如,下图中的三个节点通过光缆连接起来。如...翻译 2019-09-10 17:48:47 · 141 阅读 · 0 评论 -
鹅厂面试分享
经过半年的沉淀,加上对MySQL,redis和分布式这块的补齐,终于重拾面试信心,再次出征。鹅厂面试职位:go后端开发工程师,接受从Java转语言都知道鹅厂是cpp的主战场,而以cpp为背景的工程师大都对os,network这块要求特别高,不像是Java这种偏重业务层的语言.之前面试Java的公司侧重还是在数据结构、网络、框架、数据库和分布式。所以OS这块吃的亏比较大一面:基础技术面电...转载 2019-08-08 13:44:49 · 101 阅读 · 0 评论 -
vim
关于Vimvim是我最喜欢的编辑器,也是linux下第二强大的编辑器。 虽然emacs是公认的世界第一,我认为使用emacs并没有使用vi进行编辑来得高效。 如果是初学vi,运行一下vimtutor是个聪明的决定。 (如果你的系统环境不是中文,而你想使用中文的vimtutor,就运行vimtutor zh)1.1 Vim的几种模式正常模式:可以使用快捷键命令,或按:输入命令行。插入模式...翻译 2019-08-09 18:00:04 · 186 阅读 · 0 评论 -
为什么前后端需要分离
首先,我对我带过的所有人都说过一句话:永远不要相信前端。不是说不要相信前端工程师,而是说不要相信前端提交的数据,换句话说,安全性肯定是后端的事情。前后分离是必然趋势,考虑一个问题,你愿意后端渲染页面还是前端渲染页面?假设后端渲染页面平均需要 0.1 秒,前端渲染平均需要 2 秒,20 倍的差距。但是假如有 100 个用户,后端需要花 10 秒来处理,如果阻塞的话,平均个用户要等 5 秒;而前端渲...翻译 2019-08-28 10:20:50 · 301 阅读 · 0 评论 -
面试打分
###面试秘籍:怎么面试,怎么评分,怎么决定今天去参加了公司的interview workshop,讲怎么面试,怎么评分,怎么决定。主讲做过hiring committee,应该是比较资深的,供大家参考。打分系统,公司推荐用的标准:1.0:不要hire,hire这个人我就辞职2.0:可以hire,也可以不hire3.0:建议hire4.0:一定要这个人,他没来我就辞职实际上,大家常用...翻译 2019-08-28 13:16:17 · 890 阅读 · 0 评论 -
rest 设计规范
Representational State Transfer 简称 REST 描述了一个架构样式的网络系统。REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。概念:资源(Resources) REST是”表现层状态转化”,其实它省略了主语。”表现层”其实指的是”资源”的”表现层”。那么什么是资源呢?就是我们平常上网访问的一张图片、一个文档、一...翻译 2019-08-28 16:42:38 · 533 阅读 · 0 评论 -
有感
面试官对我的答复大致是这样的,我们不需要熟练工,我们需要在某领域拥有超过常人的积累认知,和拥有整套完整思维模式和优秀认知事物能力的人…他很诚恳地告诉我,你还年轻,真的应该好好地静下心来,深入地研究一些东西,自己写一些东西,而不是这也用过,那也知道,但是多半都是局限于仅仅见过,会用,却从来没有认真思考过其代码背后蕴含的思想,更少有人研究过源码,进而体会大师们在某些问题的解决上秉承的思想和思维的风格。...原创 2019-08-31 09:18:52 · 122 阅读 · 0 评论 -
笑话
某创业公司司招了个比较水的程序员,在招不到人的情况下,为了保证项目进度,于是又招了项目经理。因为当程序员较水,搞不定服务器上的配置,于是又招了个运维工程师,…——段子来源...原创 2019-08-31 17:29:25 · 215 阅读 · 0 评论 -
nginx 安装
安装nginx1.1 选择稳定版本我们编译安装nginx来定制自己的模块,机器CentOS 6.2 x86_64。首先安装缺少的依赖包: # yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel这些软件包如果yum上没有的话可以下载源码来编译安装,...原创 2019-09-02 10:06:19 · 99 阅读 · 0 评论 -
nginx配置文件解析
(1)全局配置#Nginx的worker进程运行用户以及用户组user nginx nginx;#Nginx开启的进程数, 建议设置为CPU总核心数worker_processes 1;#worker_processes auto; #以下参数指定了哪个cpu分配给哪个进程,一般来说不用特殊指定。如果一定要设的话,用0和1指定分配方式.#这样设就是给1-4个进程分配单独的核来运...翻译 2019-09-04 11:07:56 · 208 阅读 · 0 评论 -
bilibili go项目源码分析
go 项目源码约329个Go服务, 历史约170人左右贡献过Go代码. 代码和目录规范性比较好, 代码生成工具建设比较好, 大家可以借鉴一下.对于一个Golang开发者来说, 入职B站, 我觉得大概2-3天就可以copy&&paste开始贡献业务代码了. 其他语言开发者,3-4天吧, 因为学习Golang花一天. B站Go不依赖CGO, 业务代码可以在windows编译通过...翻译 2019-07-08 23:24:59 · 17347 阅读 · 0 评论