毕业到如今,算了算也快3年了。我也不知道怎么忽然,就玩了这么多技术,原本是.net的却成为了一枚PHP全栈工程师,虽然也不算深刻,但是通常的软件开发,仍是能够应付的。有些时候对广州那边的面试或者深圳的面试,我会比较抗拒笔试,由于我就没有看过他们所说的术语,我一直都是直接去GitHub直接review,并参考,不懂就谷歌。php
至于我是怎么开始走上架构搭建这条路,要从毕业开始。前端
毕业的时候,因为信心和经历都不全面,去了一家广告公司,面向猪八戒接单,也就是外包公司,进去呆了两个月。感受这不是我想要的发展方向,而后就不告而别了,由于年轻不懂事。而后去了一家卖茶叶的公司,他一开始把分享吹上天,而后去“微三云”企业参观,买了一套源码。而后教我维护,我一个刚毕业出来的人,业务都不懂怎么处理,你叫我维护一个上市公司的源码?,你这是逗我,而后一个月后我感受不适应,我离职。而后去了一家仍是没有任何人开发人员,想出来作金融行业的传统行业,这里就比较有趣了,我大学学到的东西,能够本身任由发挥,但是传统企业都有一个毛病,急于求成,两个月过去,它们发现没有任何收益,就解散了。vue
而后接下来是我人生的转折点,这也是我遇到我职业生涯的导师,先后两我的,一个是个人上司,一个是个人经理。再遇到经理以前,和上司在另外一家企业工做,而后公司搬到一个很大型的卖场,在那个卖场里面公司能够说是惟一一家科技公司,那时候那个卖场经理就来参观了。后面认识以后咱们才知道,经理他之前是百度出身的。后面老板和技术总监闹矛盾,还打起了公司。而后就没而后了,所在的企业再次面临解散,而后我和上司就投靠了咱们经理,想跟他作一番“大事业”。就这样,咱们三我的就组建了一个团队了。node
由于上司年纪也上去了,又有家庭,因此不少时候,我要承担更多的事,前端是我,php,服务器搭建都是我,哈哈哈。那时候的业务和敏感业务处理,上司是不会给我处理的,因此php也就crud 这样一个水平,上司在技术选行这个工做是交给我处理的,因此大家说的全部框架我都玩过,不管angular.js , angluar , React , Vue , Omi ,ThinkPHP , Laravel , Yii2 , Mysql, Node.js, Egg.js,
Express.js .... 等等等,这能够说是初级架构师要作的事情吧。最后根据团队状况,我选择了Laravel + (Vue Or React)做为本身技术栈,后端仍是中规中举的Layui,不用问我为何,有什么是一个Jquery作不了?若是有那就两个!由于后端但是什么前端框架都不会,可他们确定会jQuery。python
能够浏览一下个人简书,你会发现,我2017年一年下来,写得最多的博客是服务器搭建。是的我一年就开始搭建服务器架构了。还有就是搭建了一个gogsmysql
也就能运行php环境这个阶段,同时开始经过经理给的需求,进行需求分析和于上司经行业务梳理,而后制度方案,一开始的架构很简单,也加咱们说的 dump ,连redis缓存机制都没有,缓存用的是本地文件机制来处理。
初版的时候:服务器环境是这样的linux
所有的代码都在一台主机上运行。由于当时业务并不算大。我并无选择国内所说的centos作服务器系统,而是选择了ubuntu来作,由于ubuntu的软件库的支持,我距地是外来云计算会有很大的做用。nginx
后面咱们须要用到缓存机制,那么咱们的环境架构也须要更新支持,在windows上会出现各类奇葩的问题,好比php扩展的安装就是windows的头疼问题,如今的windows10已经有解决方案,但是当时的咱们没有这种条件,php的图片处理须要扩展,什么都须要。那时候我开始提出使用虚拟机做为咱们的开发环境,使用的vm虚拟机,利用的是vm虚拟共享文件机制,加上hosts的映射到虚拟机中。这样处理后,咱们企业的php环境保证一至。laravel
这时候的开发环境就变成了git
随着本身对linux的熟悉,和环境搭建的逐渐深刻。16年能够说是vue爆发的一年,我在14年就已经接触vue这个框架,但是当时的人向往的是angluar.js,我知道国人的尿性,vue早晚是一个趋势,16年vue爆发,生态完善,同时小程序的出现,了解了一下,发现小程序有点像vue,后面也有类vue框架的出现,那是我意识到先后分离的重要性。这个时候才算真正入门架构搭建。
这时候的属于中规中矩的一种软件开发中的处理手段,到了后面,mysql的数据库须要作读写分离,通常的人是怎么处理呢?还就真的是处理配置读写分离,在程序上作一些判断!!!就是写的时候catenation读数据库,catenation写数据库,这样作也不是不行,只是后面的时候,你的系统解藕会很是痛苦,可能你有时候都忘了那个地方写个catenation别名。我选择的是使用中间件连接池来管理个人数据库读写分离。
这个时候我已经开始认识Swoole了,我无心间在开源中国发现SMProxy这个基于Swoole的数据库连接池。因此后面也就开始出现如下状况。
随着后面的访问量上来以后,mysql读的速度跟不上了,由于用的是laravel,laravel运行速度大家都懂,我就很少说了,那时候知道laravel+swoole能够提升性能,但是每次都要去服务器重启服务,并且那时候的swoole还停留在1.9的版本,估计坑也很多,因此为了保守,就在mysql和api层都作了负载均衡。
你就看到了以下状况。
为何须要用到 keepalived 去监听写入的mysql? 若是mysql写入挂了,keepalived一旦检查到,会把某台读mysql换左写入数据库。保证你的系统还能够继续进行。
到了这里,就算你的电脑是16G运行这么台虚拟机后不免也会有点卡的啦,虽然之前有用过docker,但是那时候对linux并不熟悉,搭建环境的时候,会遇到各类问题,Dockerfile 写都写不出来,直到今年19年4月,我开始意识到我须要docker了,而19年的docker已经很完善了,docker-compose的出现,可让你模拟的环境一键部署。我一开始去github 找了好几个docker-compose版本的来看看,并吸取他们的精华,并如今本身的docker-composer 项目环境部署。
ui层一直是我来维护的,我选择的是React作为个人技术栈,不为别的,就由于他支持Ts,写代码跟舒服,并且有antd这个叼东西支持。但是咱们的ui层分为 小程序 / express.js (PC端渲染层 SEO)/ 手机端 React 。小程序 和 React 还好说,是静态资源,express 就有点麻烦了,须要重启服务,因此这个时候就须要pm2的接入。同时Swoole的完善进入Swoole4。
因为swoole 的高性能,因此以前的负载均衡就能够剩下来了。
随着ui层 和 swoole 每次迭代更新代码,都须要作一个繁琐的操做,打包编译。
因此这个时候就有了jenkins这个角色。
jenkins简单点就是自动化部署工具,如今有了docker 安装简单的要死。。
到了这里,几乎通常软件开发均可以应付。固然这里这是环境搭建而已,还有一些业务梳理架构没有详细说明,若是你能搭建到以上服务器环境的话,那么你的项目就不可能,只停留在写代码这么简单了,由于如今是数据驱动行业的年代,咱们须要对用户行为进行分析!!!
每每咱们市场说得最多得就是 pv uv,若是是你,你会怎么处理?
若是没有接触过nignx 日志的码农通常都会给出两个方案:
第一,使用站长工具
第二,利用 ajax + 创建数据库模型。而后使用程序+mysql作统计分析。
第二种是,属于高级版本,每每须要用到Redis + 定时任务来写入数据库,若是不是这样,你的写入数据库不作集群?等着呵呵吧。
若是接触过nginx日志的同窗来讲,php面对这一个海量数据的时候,不少PHP 或者 Node 的开发人员第一时间都会蒙蔽,是的若是你听到海量数据,你第一反应的就是hadopp,这个时候咱们须要跳出本身生活许久的圈子(PHP + Node),为何要选择Hadoop而不是采用第二种方式呢?由于Hadoop提供了不少面对海量数据的算法,还有以前写爬虫的时候利用的是python,python+Hadoop 数据分析,你还用愁你分析不出东西吗?
因此又获得如下日志架构
等等一些nginx的用户行为。
有了以上的日志分析,咱们会发现有时候会有同行或者某些人,是恶意扫描咱们的服务器,我这个时候就应该须要Api网关了。
我选择的是kong,其实你用nginx也能够,不过嘛,你也懂php / node 出生的,哪里懂那些底层的东西...,除非你会golang。
Kong 是经过 Admin API 管理,不像Nginx那样在配置中完成。有管理工具你不用你傻呀?并且 Kong支持 Lua 插件机制 、支持OAuth2.0、黑白名单、ACL、JWT、SSL 等 、限量的Rate Limiting 还有 可管理性Rest API 交互 性能也比较高。
因此又改了一下
到了后面你的数据量也会愈来愈大,这个时候你还在用mysql的全文搜索索引,是很不现实的一建事情。
这个时候你不得不考虑使用 搜索引擎。外国人用的比较多的是Elastic Search
固然laravel也对Elastic Search
的支持。惋惜嘛这个东西消耗的资源太大了。咱们最后仍是使用了xunsearch,虽然这个东西有时候搜索的东西不许,可是至少能用....,就是配置起来嘛没有Elastic Search方便。
这里搜索引擎用在搜索产品上,你须要用 队列 或者 定时任务 来同步 xunsearch 和 mysql 之间的关系。
2019 9 月,这是一个尴尬的时候,因为实体经济的下滑,系统也过于稳定。大老板不想在开发系统了。技术部面临解散,我和上司,经理告白以后。从新踏上招工做的路程。
我并不知道本身能不能胜任架构师这个岗位,由于看了看描述,几乎都在本科学历。我想一想我能够作前端/php/全栈这个些岗位。
也开始投,但是嘛,怎么说呢。带人我也带过,虽说技术不是很精,但是业务处理能力我也是有的,你也不能由于我学历还有年轻压我工资嘛。
9月底,决定跳出中山这个环境。去了广州二家企业面试,感受作不会之前的事了,要当回码农,可玩的事情就变得愈来愈少了。
最后不知道什么缘由,我遇到一家创业公司的邀约。
就这样我又回到之前的工做内容
需求分析 业务梳理 架构搭建,如今老板算是比较成功的啦,能够把平台作到300wpv的巅峰时期。
我看来看如今的pv仍是能够的 天天也有10v ,不过以前的那个系统bug较多,系统也没有利用设计模式开发,全是堆代码,技术总监的离职,我感受这个坑我是接不了。
申请重构代码,并把一些不合理的业务从新梳理一遍
而后架构也变为一下状态
又从零开始了,来着可怜的程序员傻梦傻,如今面临的问题是 docker 在不一样机子部署的时候,都要麻烦的去 开启端口映射, 因此将来须要作得是 学习k8s ,还有mysql 之前用的是 orm较多, 但是如今为了提升这方便的知识,偶尔会写sql api层减小 查询次数。
SQL 我如今用的是基于小米的soar-web。