工欲善其事必先利其器,作为互联网软件从业者,一款好用的工具往往能极大的方便我们解决问题。
下面我给大家盘点2022年开发运维必备的10款顶级工具,绝对能让你的工作效率事半功倍。
假设这样一种场景:
基于电商项目,往往会有很多图片交互,比如海量的商品图片,卖家和买家的聊天图片,用户个人信息图片等等
假如你作为公司电商项目技术负责人,你会如何去实现图片交互逻辑呢?
我们先看下菜鸟小A的实现:
如上图所示,我们在服务内部实现好文件上传的代码,然后上传的文件直接存储到我们服务内部。
这听上去很美好,实现也很简单,但是存在很多问题:
①、单点问题:图片都是存在服务器内部,如果是分布式服务,也就是浏览器将图片上传到A服务器,但是某用户访问是从B服务器发起的,这时候如何访问?
另外,如果一个服务器发生故障,那该服务器存储的图片不就无法访问了?
②、流量问题:文件上传往往需要比较大的带宽,随着图片的上传访问增多,如果我们不扩大带宽,就会影响到其它正常操作。
基于菜鸟版实现存在的问题,工作两年的小B升级了一下处理方式:
原来图片是存储在服务器本身,现在我们自己搭建了一个图片服务器。
浏览器发现图片上传请求,经过我们的电商服务,然后服务将图片存储到我们的图片服务器。
这样我们解决了上面的单点问题,但是又引进了新的问题:自己搭建一个图片服务器,服务器成本是比较高的,而且搭建复杂,另外,我们引进了一个新的系统,那么也需要专人去维护这个图片服务器。
老板看到高昂的服务器费用,眉头一皱。
公司大神小C微微一笑,给出了新的方案:
我们将自建的图片服务器换成腾讯云对象存储 COS。
什么是 腾讯云对象存储 COS:
腾讯云对象存储(Cloud Object Storage,COS)是腾讯云提供的一种存储海量文件的分布式存储服务,用户可通过网络随时存储和查看数据。腾讯云 COS 使所有用户都能使用具备高扩展性、低成本、可靠和安全的数据存储服务。
而且 COS 提供了直观的 Web 管理界面,通过控制台、API、SDK 和工具等多样化方式简单、快速地接入,实现了海量数据存储和管理。通过 COS 可以进行任意格式文件的上传、下载和管理。
回到我们项目,使用 腾讯云 COS(Cloud Object Storage) 有如下几个好处:
①、高可靠:COS 一般都是副本冗余的,能够保证图片访问的高可用性。
②、低成本:前期无需大量投入,能够按需计费,所以接入前期流量不大的话,费用也比较低。
③、易扩展:对象存储,存储空间无上限限制,当后期图片存储增多,也无需担心扩容问题。
④、存储下载加速:依托服务提供商的加速能力,遍布全国范围的 CDN 节点可以对文件下载进行加速。
腾讯云COS官网文档:https://cloud.tencent.com/document/product/436
Java SDK 接入案例:https://cloud.tencent.com/document/product/436/10199
PS:COS 用作图床工具也是很好用的,常用的 Typora+PicGo+COS,这一套是自媒体写作神器搭配,再也不用担心图床失效,或者图片加载慢了,用过的人都说爽。
官网:https://www.postman.com/
存在这样一种场景:
大家知道,作为一个后端开发,在项目开发过程中,会经常写各种接口,写完之后,怎么判断我们写的接口是否是正确的呢?
这时候我们迫切需要一款接口测试工具,那么 Postman
能够满足你的需求。
我们看下 Postman 的操作界面:
它具有如下特点:
①、简单易用的图形用户界面,安装后即可进行测试。
②、可以保存接口请求的历史记录,这样方便我们查看之前的测试记录。
③、可以在团队之间同步接口数据,在公司团队之间合作时显得尤为重要。
存在这样一种场景:
老板:小A啊,你这个接口性能咋样?最大能够满足多少人同时操作(并发多大)?耗时多久?
小A:???
对接口性能进行测试,应该是项目每次上线必须要进行的,上面我们可以通过 Postman 对接口进行测试是否正确,那么怎么对接口进行性能测试呢?
答案就是用:Jmeter。
官网:https://jmeter.apache.org/
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。
它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器等。
操作简单,还能输出各种测试报告,后面老板要你测试性能,就可以直接用 Jmeter 这里的输出报告交差了。
现今软件市场上有很多终端工具,比如:xshell、secureCRT、Putty、telnet等等。
但要说最好用的一款终端工具,那非 MobaXterm 莫属了,我用上它之后,彻底抛弃了其它的终端工具。
官网:https://mobaxterm.mobatek.net/
具有如下优点:
①、功能十分强大,其中内嵌 SFTP 模块,可以很方便进行文件上传下载,并且支持拖拽;
②、自带监控功能,可以很方便检测远程机器资源使用情况;
③、支持标签,切换也十分方便,且支持窗口垂直分屏、水平分屏、四象限分屏;
④、有丰富的插件,可以进一步增强功能。
运维:小A,你这写的这个项目部署有问题,你看看吧。
小A:怎么可能,我本地都是运行的好好的,肯定是你弄错了。
…
这种扯皮争吵的事,相信大家都经历过,本地运行是好的,一上线部署就有问题,那么有没有办法项目可以带环境安装?
也就是部署的时候,可以把原始环境一起打包复制过来。
于是 Docker 登场了。
官网:https://www.docker.com/
使用 Docker 如有如下优点:
①、部署快,开发测试更加敏捷
通过Docker 打包镜像发布测试,一键运行。
②、快速扩缩机器
由于Docker容器快速启动特性,可以很快速的启动几十个、上百个容器来提供更多并发和资源利用率。
③、提高系统利用率,降低硬件成本
轻量级的虚拟机,更省资源。
④、跨环境可移植
⑤、更好的支持微服务
一个容器一个服务,容器之间相互隔离,和微服务正好遥相呼应。
⑥、应用运维标准化,支持不同语言应用
⑦、避免云厂商锁定
前面我们通过 Docker 来进行服务部署,那么当今微服务时代,会有很多这种服务,我们如何管理呢?
答案就是:Kubernetes
官网:https://kubernetes.io/
在生产环境中,我们需要保证服务不会停机,或者服务停机了能够马上自启,能够监控服务运行状态,甚至服务的负载均衡等等,这些 Kubernetes 都可以帮我们做到。
服务发现和负载均衡
Kubernetes 可以使用 DNS 名称或自己的 IP 地址公开容器,如果进入容器的流量很大, Kubernetes 可以负载均衡并分配网络流量,从而使部署稳定。
存储编排
Kubernetes 允许你自动挂载你选择的存储系统,例如本地存储、公共云提供商等。
自动部署和回滚
你可以使用 Kubernetes 描述已部署容器的所需状态,它可以以受控的速率将实际状态 更改为期望状态。例如,你可以自动化 Kubernetes 来为你的部署创建新容器, 删除现有容器并将它们的所有资源用于新容器。
自动完成装箱计算
Kubernetes 允许你指定每个容器所需 CPU 和内存(RAM)。 当容器指定了资源请求时,Kubernetes 可以做出更好的决策来管理容器的资源。
自我修复
Kubernetes 重新启动失败的容器、替换容器、杀死不响应用户定义的 运行状况检查的容器,并且在准备好服务之前不将其通告给客户端。
密钥与配置管理
Kubernetes 允许你存储和管理敏感信息,例如密码、OAuth 令牌和 ssh 密钥。 你可以在不重建容器镜像的情况下部署和更新密钥和应用程序配置,类似热部署,也无需在堆栈配置中暴露密钥。
通过 Docker 部署了很多服务,通过 Kubernetes 对这些服务进行管理编排。那么怎么去实时监控这些服务的运行状况呢?
Prometheus
是一个开源的系统监控和报警系统,在kubernetes容器管理系统中,通常会搭配prometheus进行监控,同时也支持多种exporter
采集数据,还支持pushgateway
进行数据上报,Prometheus性能足够支撑上万台规模的集群。
具有如下特点:
①、支持多维度数据模型;
②、灵活的查询语言(PromQL
):可以对采集的metrics指标进行加法,乘法,连接等操作;
③、可以直接在本地部署,不依赖其他分布式存储;
④、可以通过中间网关pushgateway
的方式把时间序列数据推送到prometheus server端;
⑤、可通过服务发现或者静态配置来发现目标服务对象(targets)。
⑥、有多种可视化图像界面,如Grafana等。
https://github.com/prometheus/prometheus
我们在项目开发迭代中,首先会把代码提交到代码仓库,然后运行单元测试、代码规范检查,然后进行部署等等。
如果这里每一步都需要我们手动去操作,肯定比较费劲,那么 Jenkins 可以帮助我们。
通过提前设计好的 Jenkins 构建策略等,可以实现一键测试、部署等等。
开发人员所要做的就是提交代码至仓库,其余的工作都可以交给 Jenkins 完成。
官网:https://www.jenkins.io/
PingCode 是简单易用的新一代研发管理平台,让研发管理自动化、数据化、智能化,帮助企业提升研发效能的一款工具。
官网:https://pingcode.com/
传统的文档工具,包括 WPS ,微软的 office 软件等,都只能支持本地文件操作。
假设我们在公司电脑创建一个文档,然后回家了想修改,电脑又没带,那该怎么办?
另外可能需要多人头脑风暴,对同一个文档进行操作,别人能马上看到他人的修改,那又该怎么办?
答案就是用在线协同文档。
当前市面上有很多在线协同工具,比如石墨文档,飞书文档,还有腾讯文档,功能大体上都差不多,但是如果我们用微信比较多的话,微信是能够直接操作腾讯文档分享的文件,很方便我们进行编辑。
官网:https://docs.qq.com
好用的工具有很多,以上我能够盘点出来的 10 个工具,是认为能对大家日常工作中最有帮助的。
2022年已经过去了大半,不管它是好是坏,都是你我共同经历的人生。
未来,我不知道将去何方,但是我已在路上。