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