- 这是一张把服务端开发涉及的技术栈汇总出的一张技术架构图。
- 当然技术栈内容绝对局限于此,还有很多的其他的框架,可以被替代,只不过这些是比较常用的。
- 这些构成你日常开发的整张技术图,可能有些是没用接触的,但这样就可以很好的让你去补充自己的盲区。
1. 负载
- LVS的英文全称是Linux Virtual Server,即Linux虚拟服务器,主要用于多服务器的负载均衡。
- F5是负载均衡产品的一个品牌,除此以外还有,Radware、Array、A10、Cisco等。
- Nginx就比较常见,它是由C语言编写的,是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
2. 关
- 使用过SpringCloud的小伙伴都用过zuul,或者公司内部自研,以及把RPC接口转换为Http接口的一种服务。
- 为了方便客户端调用微服务,所以设计出了 关。在微服务实例地址发生改变的情况下,客户端调用服务要能够不受影响。
- 关可以完成的功能:路由、反向代理、日志记录、权限控制、限流、切量、黑白名单等
3. 架构
- 大家最先接触的架构基本都是MVC,后来进入互联 企业开始逐渐有了更加复杂的分层处理,以及接入了RPC和 关。
- 随着SpringBoot的兴起,DDD领域驱动设计下的微服务逐渐起来了,这种四层架构是一种设计理论,以领域为中心建模开发。
- SOA是面向服务的架构模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。
4. 治理
- 在服务的治理中一般包括;熔断、降级、限流和服务编排等。
- 这里的思想是为了进行统一管理控制,各业务系统都是一个个自服务,最终提供给编排系统进行管理。
5.框架语言
- 这一层就是大家日常开发的技术语言层,用到各个技术栈来满足开发需求。
- 比如框架类;Spring、SpringBoot、Mybatis等。
- 同时这里也会涉及到很多的盲区技术,因业务开发的特性不同,所需要的技术栈也会不同,为了不同的业务场景会引入不同的技术方案进行处理。比如;Drools、Snowflake、Finlk等。
6. 服务
- 这一层是我们在开发过程中用到的组件涉及的中心服务类配置。
- 比如Dubbo以及它的注册中心、MQ以及它的平台服务、分布式任务和配置中心等
7. 数据
- 数据是整个系统的价值体现,因业务的体量发展从单库单表到分库分表,从数据查询到文件系统,再到各类搜索引擎的使用。
- 同时在DB数据的同步过程中一般会使用基于binlog的otter进行同步ES+Hbase操作。
- 以及Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在 络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在 络(从数学角度叫做图)上而不是表中。
8. 环境
- 在项目开发完成后一般会部署到自己的服务上或者云服务,以及选择不同的服务厂商。
- 再比如现在比较火的Docker和K8S,虽然不是日常开发的一部分,但也可以扩展学习了解。
9. 支撑服务
- 这一部分包括的是;、、、、、、、以及其他需要的支撑功能。
- 除此之外还有一些工具类的软件,比如:、、、、等,熟练使用工具也是提升开发效率的最有效方式。
四、总结
- 在中,我们开篇介绍了面试官会问你啥的一个总结概述,以及到本篇介绍了技术栈盲区,通过这样两个章节的内容,可以让同好技术的小伙伴,有一个全局的认知,之后我们再去逐个攻破。
- 面试只是搂草打兔子,学习才是主干路线,千万不要以为学了什么神秘大招或者洗脑长文就能所向披靡,那都是凑巧的小概率事件。
- 我为技术用一年时间积累出来整套圈子;、、、、、,欢迎加入这个生态技术圈,每个人都有自己擅长的技术方向,互相学习,共同进步。
推荐阅读
- 面经手册 · 开篇《面试官都问我啥》
- 工作两年简历写成这样,谁要你呀!
- 讲道理,只要你是一个爱折腾的程序员,毕业找工作真的不需要再花钱培训!
- 大学四年到毕业工作5年的学习路线资源汇总
- 手写mybait-spring核心功能(干货好文一次学会工厂bean、类代理、bean注册的使用)
- 源码分析 | Mybatis接口没有实现类为什么可以执行增删改查
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览92145 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!