概述

技术领域没有银弹,各行各业的人想要持久的生存都需要学习,学习本身是一件有趣的事,难点在于把学到的知识融入到现在公司的业务和体系中,让项目落地,重新定义和改革之前的架构体系,这个过程是复杂的,新旧体系的交替,人员的流动等等,这个过程可能会遇到各种各样的问题,没有数据证明的项目落地都差那么点意思,不够精准和严谨,专业程度会遭到质疑。

2021年技术圈的变化:

1.centos7即将停止更新,2024年不在打补丁...
2.layUi下线官网,接入Vue开发模式 ...
3.PHP语言市场占有率排名下降了2位,2021排名第10,还有下降趋势...
4.容器(Docker)技术的成熟,微服务变成了一种主流...
5.市场Go语言编程者上升很明显...
...

不管什么年代,实力都是王中王,保持学习的习惯对一个手艺人尤为重要,持续学习和思考是职场人最珍贵的品质。

多想多思考,才能从根本上提高效率。有总结的能力、有宏观的角度、有兼顾细节的耐心。

编程语言

没有什么语言是最好的编程语言,语言只是语法和解决问题的侧重点不同,比如PHP就擅长Web领域,Go专门解决并发的问题,本质上没有什么不同,都是实现某一个业务(功能)的工具,实现的一种手段。

PHP

从初入职场至今,主要从事的就是PHP语言的编程开发,其他的学习都围绕着这条主线,从开始的基本编码、到扩展、编入第三方插件,由浅入深层层递进。

PHP语言虽然不及前几年那么火爆,但是还是有很强的生命力,简单高效,易扩展,开源,有强大的社区是语言生命力的保证。

Swoole

Swoole两个扩展是具有划线的两个扩展,和之前的扩展不同,它在启动时,预编译代码、启动线程池也加入了协程这个网络处理结构。常驻内存型的分布式 PHP 框架,专为 API 而生,摆脱传统 P运行模式在进程唤起和文件加载上带来的性能损失。

Hyperf 和Easyswoole是Swoole的扩展框架,我主要用的是Easyswoole,基于websocket做了一个消息推送服务。

Easyswoole专栏链接

后端存储

业务大体分为两种,一种主要是消耗计算力为主的CPU密集型,一种是主要消耗内存和缓存的I/O密集型业务,存储也分两种一种是关系型数据库,一种是内存型数据库,他们有着各自的优缺点。

Mysql

比如说执行一条Sql语句,要明白这条语句发生了什么,查询语句和更新语句有本质的不同。Mysql还有个不同的点在于,Sql语句的执行,很大程度又取决于存储引擎。

Mysql的存储结构是Betree结构,在每一层都有指针链接,由页和叶子节点按顺序存储,查询语句,是经过链接器、分析器、执行器和优化器,返回查询结果。更新语句更多的是依赖redoLog和Binlog日志来完成。

查询的语句使用explain测试,如果有不按预期执行的语句,检查配置文件,配置文件的参数,决定了后续的计算和算法。

InnoDb和Myisam的存储不同在于,Myisam索引存储的是物理地址,InnoDb存储的是实际数据,少了回表的执行过程。

Mysql的最大杀手是并发查询,在执行脚本任务的时候,最后可以加上主键的条件,Order by ID ASC 在加上一个 WHERE ID > ID 的条件。

如果链表的速度比较慢,可以把少的部分单独查询出来,做字典拼接处理,在我之前的博客里写的很清楚了,百万级数据查询优化笔记 有叙述具体的方法,在这就不赘述了。

Redis

Redis更像是一个被一个大的对象包裹的数据结构,支持丰富的数据结构,但是Redis是单线程,如果执行失败需及时释放。

Redis的计算方法依赖于配置的参数,字符串是一种算法,数字是一种算法,对不同的长度也有不同的算法。

要注意缓存的回收与一致性,这是一定会遇到的问题。

并发与性能

先说说我之前失败的一个例子,Http的请求量过大,直接打在Mysql上,开始还能反应过来,半个小时后,挤压的超时太多,直接把Mysql压垮了。复盘后我重新修改了接口逻辑加了两个小时的缓存,在过期时1-3000s随机过期,后来经过Jemeter压测得到了30/s的峰值。

主要通过容量预估和压力测试两个部分来说明这个点。

容量预估

容量预估的核心是计算,把峰值的QPS计算到具体的每秒多少,容量预估就是对Cpu、内存的精确计算预处理能力。就像物理学家通过模拟计算预测引力波、黑洞、等多种天文现象。

项目开始之前应该问相关同事的历史记录和情况,进行容量预估和方案设计。思路有时候比结果更重要。

压力测试

项目完成对项目进行压力测试主要是测试会不会因为高峰流量到来的情况,压力测试有两个关键的点,访问最优点和访问最大值,压力保持在最优点以下。还需要预留点伸缩空间。

容器和微服务

单机系统时代,最开始的互联网公司都使用单机系统就足矣满足用户的需求,随着互联网的高速发展,单一的系统不能满足场景的多样化需求,由单一系统逐渐演变成分布式系统。

容器的兴盛把微服务变成了一种可能,微服务主要是针对之前的分布式系统做的对比和区别,把单一的功能封闭在自己的范围内,加强了系统的稳定性,高效便捷、快速熔断的特点。

真正的微服务,最核心的其实是 如何做好服务间的最小粒度切分,其实这个 服务切分是属于架构规划上的范畴。

Docker容器

对于Docker进行了3次大规模的学习,掌握基本的原理和操作命令,Docker是很好用的工具,快速部署服务。

单独搭建部署应用服务、Docker php安装扩展步骤详解、Docker 环境下部署高可用集群实践
有说明和讲解。

其他总结

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

1.程序设计时要充分考虑界值、是否存在、最大最小的情况,便于程序可控
2.跨协程调用的问题在于,生成野协程无法回收
3.编程编来编去都是数学
4.mysql并发连接和并发查询:并发连接数达到几千个影响并不大,就是多占一些内存而已。我们应该关注的是并发查询,因为并发查询太高才是 CPU 杀手。
5.CSP模型是用于描述两个独立的并发实体通过共享的通讯 channel(管道)进行通信的并发模型。 CSP中channel是第一类对象,它不关注发送消息的实体,而关注与发送消息时使用的channel。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

1.高性能 就是最合理的使用了Cpu和缓存
2.微服务架构是一种思想,与实现语言无关,容器的隔离性给微服务带来了可能
3.容量预估是架构师的基本技能,是考计算出来的
4.RPC的本质是进程与进程之间的通信
5.TCP交互的本质是数据流的互动和传输
6.分库分表:掌握拆分方式是关键,理解拆分原理是内核
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

1.性能问题的本质,就是系统资源已经达到瓶颈,但请求的处理却还不够快,无法支撑更多的请求
2.进程的 PID 在变,这说明什么呢?在我看来,要么是这些进程在不停地重启,要么就是全新的进程
3.用我们最熟悉的 ps 或者 top ,可以查看进程的状态,这些状态包括运行(R)、空闲(I)、不可中断睡眠(D)、可中断睡眠(S)、僵尸(Z)以及暂停(T)等
4.最容易想到的应该是 CPU 使用率,这也是实际环境中最常见的一个性能指标。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

JavaScript 中对象独有的特色是:对象具有高度的动态性,这是因为 JavaScript 赋予了使用者在运行时为对象添改状态和行为的能力。
线程是调度的基本单位,而进程则是资源拥有的基本单位。
经典的密码学算法:对称加密算法、非对称加密算法和散列算法。
“授权”和“访问控制”其实是同一个概念,都是允许或者禁止某个用户做某件事情。

未来

有个同事跟我说了一个很好的办法,就是看到代码时,在你大脑里运行一遍,看看是否存在非预期的结果,常常优化自己的老代码,获得新的进步。

对于每一个明天都属于未来,决定未来的是每一个现在。

Go

Go和Linux私房菜(服务器架设篇)是我2022年学习的重点,要严谨认真,要继续加油~

参考文档/课程

  • 参考Swoole/Easyswoole的官方文档
  • 架构解密
  • 深入浅出大型网站架构设计
  • 网络编程实战
  • 大型网站服务器容量规划
  • Mysq 45 讲(极客时间)
  • 高并发设计40讲(极客时间)
  • 代码整洁之道
  • Redis的设计与实现
  • 微服务设计
  • 后端存储实战课
  • web容量预估
  • 透视HTTP协议(极客时间)
  • Docker技术入门与实战(第三版)

PHP - 2021年终总结相关推荐

  1. 2021年终总结模板.pptx(附下载链接)

    猜你喜欢 0.[免费下载]2021年10月份热门报告合集1.如何搭建一套个性化推荐系统?2.从零开始搭建创业公司后台技术栈3.全民K歌推荐系统架构.算法及后台设计4.微博推荐算法实践与机器学习平台演进 ...

  2. 2021年终总结及2022年展望

    2021年终总结 2021年是喜悦及困苦并存的一年.在这一年里迎来了宝宝六一的降生,初为人父满怀喜悦:也经历了媳妇.岳母生病时的紧张与无助. 2021年年尾的最后一天从工作四年多的单位正式离职,离开了 ...

  3. 【报名】榜单奖项+产业图谱+行业报告+线下论坛,2021年终金猿策划活动已开启...

    "[提示]"❶榜单奖项❷产业图谱❸行业报告❹线下论坛"全方位开启年终大型主题合作,欢迎报名咨询.点击文末"阅读原文"链接提交活动意向报名表,并进一步与 ...

  4. 2021年终总结暨2022年计划安排

    一.前言 转眼间,时光的指针即将拨到 2022 年了,不知道你是否对 2021 年的自己是否满意呢?满意或不满意都不重要了,2021 已成为过去式了,让我们用新的姿态来拥抱 2022 吧.今年的年终总 ...

  5. 多数互联网人对2021年终奖不抱期待

    2021年,互联网行业可谓是"冰火两重天".一边是腾讯.字节.爱奇艺等互联网大厂纷纷裁员,不少员工被"优化"四处寻求新Offer:而另一边却是另一番景象. 有网 ...

  6. 【踔厉奋发,笃行不怠】中创算力召开2021年终工作会议

    2021年终会议数据计算存储创新 不忘初心,逐梦远行向上而生,披荆斩棘-中创董事长新春寄语 2022年1月27日,中创算力年终工作会议在正商国际广场举行.全体中创员工齐聚一堂,我们带着这一年的收获,回 ...

  7. 2021年终总结:提高认知,摆脱传统工科桎梏

    一.前言 2021年快要结束了,在此借着这个机会,来做个年度总结,并且展望一下2022年. 从今年开始写博客起,就喜欢在博客中分享工作学习中的东西了,因此今年的年度总结也选择以博客的方式记录下来.之前 ...

  8. 2021年终总结 万千热爱 初心未改 行至天光

    2021年终总结,最好的年纪,别辜负最好的自己 "从此绿鬓视草,红袖添香,眷属疑仙,文章华国."清魏子安<花月痕> 2021年结束了,想赶在自己毕业前为自己今年的学习生 ...

  9. 软件测试2021年终总结

    明天就是元旦了,2022年即将来临,节前把2021年终总结写了 今年也是有零零星星的疫情,本来想继续在原公司工作的, 但是因为在原公司在测试这一块得不到更好的锻炼了, 而且刚得了年度优秀员工的奖项,算 ...

  10. 2021年终总结,幸运又令人感激的一年

    2021年终总结   这篇年终总结原本应该在21年写出,但是,前前后后,提笔落笔,总觉得有许多想写的,又觉得好像没什么可说的,所以就拖到了现在才写了这边年终总结.   就像题目写的,2021对我来说, ...

最新文章

  1. IntellJ_打开选中的文件所在的文件夹
  2. 使用reflector对.NET反编译
  3. linux 系统 RRDTool安装方法
  4. 后备干部,究竟应该提拔什么样的员工?
  5. Python的常用模块
  6. 关于kv的jch分片存储
  7. pcm转换在线工具_律师必备的PDF在线转换工具,推荐5款,全免费!
  8. 每天花30分钟看OGRE--(13)Ogre的渲染流程,在渲染时材质是如何起作用的,材质加载和解析...
  9. js遍历数组和遍历对象的区别
  10. LVDS 屏 format
  11. Luogu1060 开心的金明
  12. Springboot
  13. c语言餐厅饭卡管理系统,饭卡管理系统
  14. 计算机启动键,U启动U盘启动盘一键启动按键大全
  15. 服务器u单核性能排行,CPU单核性能天梯图2021 2021年最新CPU单核性能排行天梯图...
  16. 新手学游戏开发必知的一课
  17. 语义分割学习笔记(一)
  18. 前端大文件上传断点续传解决方案
  19. JAVA与C、C++比较
  20. java debug调试怎么用?

热门文章

  1. echarts x轴数据旋转
  2. 戴尔G15-5520蓝屏解决方法
  3. JavaScript every 和 some 跳出循环
  4. Android 将签名布局旋转90度,Android 自定义View手写签名
  5. SECS/GEM之SECS Driver开发源代码
  6. 画春天的景色计算机教案,幼儿园春天主题教案:画春天
  7. android 获取文件大小
  8. echarts map 地图做出立体效果 | 简单的解
  9. 内网solr全文搜索服务器,快解析一步映射让外网访问
  10. AirPods 无法连接到iPhone、iPad或Mac的解决办法