ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【回忆录】看看一个菜鸟程序员在创业公司2年都经历了什么...

2021-06-20 21:02:21  阅读:177  来源: 互联网

标签:... 老大 一个 菜鸟 程序员 开源 开发 我们 分布式


N年前,我以一个菜鸟的身份,进入了一家创业公司 我原本以为公司是这样的… 但是实际上是这样的…
我进去时,我们部门除开部门老大,还有我,还要我,只有我…和我的老大

所以,我就这样开始了我的程序员生涯…,开始了我的苦逼技术之旅…
在这里插入图片描述

公司是做电商网站的,因为我是个菜鸟,所以我接到的第一个任务就是做一个网页,这时我学会了:

  • HTML:用来布局网页
  • CSS:用来美化网页
  • JavaScript:用来做点击跳转,窗口弹出

但,某天,老大跟我说,真正开发时需要用一些开发框架和组件来快速开发,所以我学会了:

  • JQUERY:极大简化了JavaScript的编程方式
  • BootStrap.js:可直接套用其好看的样式进行快速开发

经过加班加点,网页总算开发完成,我兴冲冲的告诉老大我完成了,老大看了一眼,冷冷的说了声,浏览器兼容做了没?所以我用IE打开了我的成果,一看…为什么会这样…没关系的,加油,接下来我下载了:
在这里插入图片描述

  • 谷歌浏览器
  • 火狐浏览器
  • IE6,7,8,9浏览器
  • 360安全浏览器
  • 360极速浏览器

与这些进行了艰苦的斗争,最终我赢了,同时也赢得了老大的第一次赞赏!
第二天,新任务来了,老大说,现在这个网页是静态,需要改成动态的…
紧接着,我学会了:

  • Ajax,用来进行前端调后端接口
  • Json,后端接口返回的数据的一种格式
  • Spring:轻量级的快速开发框架
  • Spring MVC:一个快速开发Web应用框架
  • FreeMarker:一种服务端模板引擎
  • HttpClient:一个Java实现的Http请求客户端
  • Mybatis:一款优秀的持久层框架
  • Mysql:一个国内最流行的数据库软件
  • Maven:一个项目管理工具,可以对 Java 项目进行构建、依赖管理
  • Tomcat:使用得最多的Servlet容器,可以用来接收浏览器请求

往后几个月工作和生活的重心就是上面这些技术…
突然,有一天,公司来新人了,我总算不是孤单一人了,这时老大跟我说,要用一些项目管理工具…所以我又学会了:

  • Git:一个代码版本管理工具
  • GitLab:一个项目管理和代码托管平台
  • Nexus:一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问
  • 禅道:第一款国产的开源项目管理软件,完整地覆盖了项目管理的核心流程
  • jira:Jira融合了项目管理、任务管理和缺陷管理,许多著名的开源项目都采用了JIRA

有了这些管理工具,老大说,除开上面这些,还需要一些自动化构建工具,这样能使得开发测试上线更加顺利,所以,我学会了:

  • Docker:一个开源的应用容器引擎
  • Jenkins:一个开源的、提供友好操作界面的持续集成(CI)工具

一套自动化开发测试被我搭建起来了,有了这一整套项目开发管理工具,我们的小团队合作的非常愉快,不久,我们网站的核心功能开发得差不多了
这时老大说,为了上线之后能够有保障的运行,我们需要给我们的网站配套一套监控和日志系统,这样我们搭了:

  • Prometheus:一个开源的服务监控系统和时间序列数据库
  • Grafana:一个开源的、功能齐全的度量仪表盘和图形编辑器
  • Zabbix:一个企业级分布式开源监控解决方案
  • ElasticSearch:一个实时的分布式搜索分析引擎
  • Kibana:一个能对日志进行高效的搜索、可视化、分析等各种操作的平台
  • LogStash:一个应用程序日志、事件的传输、处理、管理和搜索的平台
  • Log4j:一个可以控制日志信息输送的目的地的开源组件
  • Logback:og4j创始人设计的另外一个开源日志组件

搭完这一套,网站上线了,一段时间后,网站的用户慢慢在增多,我们通过我们的监控系统,发现有几个核心应用压力在不停地增加,老大说我们要做负载均衡了,所以我了解到了:

  • nginx:一个高性能的HTTP和反向代理web服务器
  • lvs:一个虚拟的服务器集群系统
  • keepalive:一个可以检测web服务器的状态的服务

最后我们通过使用nginx并增加几台服务器来做了负载均衡,不过老大继续说,仅仅做负载均衡还不够,我们可以把热门商品给提前缓存起来,所以我又学到了:

  • Redis:一个高性能的key-value数据库,对关系数据库起到很好的补充作用
  • Jedis:一个Redis 官方首选的 Java 客户端开发包
  • Redisson:一个在NIO的基础上,为使用者提供了一系列具有分布式特性的常用工具类

这样,我们的网站访问速度提升了,有一天,老大说,我们要做一个订单状态变更短信通知的功能,说用消息队列来做,让我来做一次技术选型,我又学了:

  • RabbitMQ:是一款高性能、搞健壮性以及高伸缩性的消息队列中间件
  • Kafka:是一种高吞吐量的分布式发布订阅消息系统
  • RocketMQ:一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务

最后,我选了阿里的RocketMQ,并跟老大进行我选型的思路,受到了老大的认可,升为了研发组长…
随着业务的发展,某天,老大说,我们要对我们的项目做一次重构,改成分布式微服务架构,让我学习一下:

  • Dubbo:阿里开源的高性能RPC调用框架
  • Spring Cloud:一个为开发人员快速构建微服务架构的开发框架
  • Zookeeper:一个集中式服务,用于维护配置信息、命名、提供分布式同步和提供组服务
  • Netty:一个高性能网络应用框架
  • Xxl-Job:一个轻量级分布式任务调度平台
  • Elastic-Job:一个分布式调度解决方案

接到这么重的任务,我抓紧自己的每一秒来学习这些技术,最后,我跟老大说,我们用Spring Cloud,他所提供的几个组件太强大了,比如:

  • Nacos:一个动态服务发现、配置和服务管理平台
  • Ribbon:一个在客户侧提供软件负载均衡算法的组件
  • Feign:一个更强大好用的Java HTTP 客户端库
  • Sentinel:一个面向分布式服务架构的高可用流量防护组件

这样,我们很长一段时间,陆陆续续的将我们的项目重构为了Spring Cloud,重构完后,我们喝了一顿…
紧接着,我们进入了告诉发展期,这期间,我了解到了:

  • 敏捷开发:一种新型的互联网开发模式
  • 迭代:敏捷开发过程中的周期概念
  • 看板:敏捷开发过程中最重要的效能工具
  • DDD:一种微服务拆分设计思想

等等开发设计理念…

直到有一天,出事了…,我们网站瘫痪了,赶紧的,一看监控,数据库压力爆了,我们通过调整限流等措施,暂时得到了缓解,事后,老大严肃的跟我们说,我们要分库分表了,所以我又去学了:

  • Mycat:一个彻底开源的,面向企业应用开发的数据库中间件产品
  • ShardingSphere:一套开源的分布式数据库中间件解决方案组成的生态圈

经过一顿苦战,分库分表也被我们搞定了,不过老大说,还不够,我们还要做到自动扩缩容,所以我学到了:

  • kubernetes:一个来自 Google 云平台的开源容器集群管理系统
  • openshift:一个由红帽推出的面向开发人员的Paas

在这个过程中我了解到一些概念:

  • ServiceMesh架构:下一代微服务架构
  • Serverless架构:用来构建和运行不需要服务器管理的应用程序
  • 云原生架构:一种结合云环境,充分利用云资源的架构
    经过努力,我们的网站做到了自动扩缩容,很是强大,整个网站的开发也渐渐进入了平稳期…

两年时间,我很幸运,我学到了很多技术,这只是我经历的第一家公司,很感谢这家公司和我的老大,但是,我知道外面的世界很大,需要我走出去,然后,我跑路了

标签:...,老大,一个,菜鸟,程序员,开源,开发,我们,分布式
来源: https://blog.csdn.net/qq_41770757/article/details/118074493

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有