从​程序员到大型分布式架构师,自己到底位于哪里(一)

您好

关注

阅读 71

2022-03-11


    写这篇文章为了更清楚自己技术能力,同时分享给大伙,看看自己技术水平位于哪里。

 个人能力有限,基于我所理解的知识来讲解一下:​从程序员到大型分布式架构师,我们自己到底位于哪里。

描述不当之处还请各路大佬点明,老弟也好更上一层楼!!!

本人就以之前画的​微服务系统架构图​来逐一讲解。

从程序员的视角到大型分布式架构师的视角来看……

1.懵懵懂懂的我

    我刚开始学习Java编程时,只知道写下简单的格式化输出语句,在开发工具打印出来;简单读写文件数据;后来开始接触数据库,学习JDBC,学会了简单的增删改查;接着学前端三剑客,学习jsp,学会了写个简单的页面。到这里就经历了,普通jar应用到web应用。但当时的我一脸懵逼,根本不知道自己能干什么,甚至连开发web应用是用HTML+ajax开发还是用jsp+ajax来开发,因为我当初不知道动态页面和静态页面的区别。

    因为蒙圈,所以学习。为了更好更快的开发,我开始接触​框架、​接触​MVC三层架构、​接触​JQuery。​应用和数据库交互不用自己封装JDBC了、有了规范写起来不乱套了、不在需要写原生js那么枯燥了。当时也是懵懵懂懂,知道怎么用,​不知道自己技术位于哪里,也不知道该如何成长。

    后来接触Spring,当时SpringBoot还不流行,但用着非常流行的一套框架​SSM​(Spring,SpringMVC,MyBatis)整个项目都简单起来开发也迅速,copy配置文件配置下就可以用起来。但当时前端还是用着jsp,el表达式,ajax。此时的系统还是个普通的JavaWeb项目。当初做个管理系统还是可以用的,哈哈哈。后面学习了​tomcat、linux​、​前端框架bootstrap、easyUI、maven,接触了​前后端分离。

    SpringBoot 2.0​发布后,才开始使用SpringBoot开发。前端框架​vue​ 逐渐流行起来,也开始学习vue,学习前端新的ui框架如:​elementui​。学习前后端分离部署,前端编译打包部署于​nginx​,后端编译打包内置tomcat部署。

总结

    技术学到这里,掌握了jar应用、一体化web和前后端分离web的开发,但依旧是个单机项目,整体来说就​前端、后端和数据库​,位于微服务系统中“红色框”。

从​程序员到大型分布式架构师,自己到底位于哪里(一)_数据

    虽是沧海一粟,却是根牢蒂固。这只是基础的业务代码,也是很多程序员所做的工作。

    在此需要领悟一点:在大型分布式架构平台下,程序员使用平台中不同的技术开发出解决不断增长业务的应用。

2.刻苦修炼成为强者

为了应对各种复杂的业务,需要不断学习各种新技术。接下来将逐一简述常用技术。

2.1.任务调度技术

    也称为定时任务,定时的执行一些程序来完成业务所需功能。如:定时日终对账。

常用任务调度技术

从​程序员到大型分布式架构师,自己到底位于哪里(一)_spring_02

2.2.缓存技术

    缓存说白了就是面向内存操作数据,读写速度很快,也支持缓存数据持久化的文件中。在此重点讲解技术的使用场景,以代表性的缓存技术Redis为例,常用场景有:热点数据缓存,数据共享,分布式锁,全局ID,购物车等等。

从​程序员到大型分布式架构师,自己到底位于哪里(一)_spring_03

2.3.消息队列技术

    常用消息队列RabbitMQ、RocketMQ、Kafka。如:对日志收集和数据收集场景则使用Kafka。常见应用场景如图

从​程序员到大型分布式架构师,自己到底位于哪里(一)_数据_04

2.4.文件存储技术

    主要用于保存业务数据文件和文件传输,可以在存储上做修改操作,文件存储的树状结构及路径访问方式虽然​方便用户​理解、记忆和访问。如:某些业务交互需要通过ftp文件传输来完成。

从​程序员到大型分布式架构师,自己到底位于哪里(一)_数据_05

2.5.对象存储技术

    主要用于保存不在存储上做修改的数据。​方便计算机软件​访问文件存储系统。如:图片,视频等。

 ​关于怎么选择文件存储还是对象存储​,主要看是否需要支持​在存储设备上修改数据,​像图片这种数据就不需要在存储设备上直接修改数据。非常重要的一点:​对象存储的数据都是整个数据取出来,修改,再放回去的模式,不支持直接在存储上修改。

    ​技术方案:​MinIO

    Minio 是个基于 Golang 编写的开源对象存储套件,基于Apache License v2.0开源协议,拥有着高性能、可扩展、支持云原生、兼容亚马逊S3云存储服务接口等优点。

2.6.搜索引擎技术

主要用于数据快速检索。​

技术方案:Elasticsearch、Solr

常用使用场景:

从​程序员到大型分布式架构师,自己到底位于哪里(一)_spring_06

2.7.数据库分库分表技术

    如果还是使用以往方式,则查询一个表数据需要多次访问不同的库来实现数据的查询。数据库分库分表后需要引入新的技术来方便数据的操作。有两种方案:客户端方案和中间件(中间层)方案

从​程序员到大型分布式架构师,自己到底位于哪里(一)_spring_07

    Sharding-JDBC客户端方案就是引入新的jar,通过客户端来访问数据库,无代理层,无需更改部署架构;

    MyCat 中间件方案就是新增一层代理,通过代理来访问数据库,后端无代码入侵,直接访问代理层。

2.8.集群技术

    有的中间件天然支持集群,而有的则需要自己搭建集群部署环境。

常用的软件负载均衡技术组合:

从​程序员到大型分布式架构师,自己到底位于哪里(一)_数据_08

三者都是采用反向代理来实现负载均衡。

    nginx 使用更加广泛,不仅可以用于搭建负载均衡,还可以用于部署前端系统,nginx支持更高的并发、对传输文件进行压缩传输等功能。

2.9.内网私库

    有的公司​只能使用内网开发​或​自研了框架​技术,这时使用外网的库(maven库、Gradle库或npm库)都是无法解决该问题的,此时必须公司搭建私库统一提供服务,自研框架上传到私库或内网服务构建环境走内网私库。

    使用​Nexus​ 技术来搭建私库,支持Maven仓库、Gradle仓库和npm仓库。


总结

    第2大点主要讲了常用中间件技术。到此为止常用开发技术基本都有接触到了(框起来的红色部分)。学习到这个水平也已经非常不错了,不要整天一上来就学习什么电商系统、搞一整套微服务架构这些东西,把这些技术学扎实才是王道。

    在这里多唠叨几句,微服务治理架构的搭建并不会提高你的编程能力,能接触到生产环境微服务架构搭建落地的又有多少呢?说白了搭建这些的意义是什么呢?最终不都是服务于业务吗?业务的不断增长,系统不断的越来越繁杂,开发和维护都变得越来越复杂,才需要搭建治理环境来更好的开发部署,监控运维。宗旨,要在基础打牢后再学习服务治理相关技术。

从​程序员到大型分布式架构师,自己到底位于哪里(一)_spring_09

在第二篇继续解说:分布式服务治理方案、DevOps(开发运维一体化)、大数据接入、内网DNS等等​。

第二篇:​​从程序员到大型分布式架构师,自己到底位于哪里(二)​​

从​程序员到大型分布式架构师,自己到底位于哪里(一)_数据库_10

 转载请指名出处!!!



精彩评论(0)

0 0 举报