当前位置: 首页 > news >正文

Java程序员升职加薪必备技术——分布式

随着互联网的快速发展,和云服务概念的普及,使得我们在搭建系统的时候越来越倾向于分布式系统架构,也成了现在企业升职加薪的重要考核技术。

Java项目的架构方式

如下图所示 ,Java项目大体上经历了由单一应用架构到垂直应用架构再到分布式应用架构的一个过程,接下来我们就来详细了解下这三种架构的变化和进步。

1、传统的架构思维 -> 单一应用架构

单一应用架构的意思就是一个项目就是一个系统 ,在21世纪初,大规模的企事业单位的信息电子化,涌现出一大批应用于企业内部信息管理的系统,如OA ,财务管理软件,人事管理系统,ERP等,但是随着系统的业务功能增多,代码量增大,变得原来越来越难以维护,且不容易扩展,而且随着系统的访问量越来越大 ,系统的性能瓶颈也越来越突出。

2、垂直应用架构 -> 一个系统拆分成多个子系统

垂直应用架构简单来讲就是将原有的单一应用架构的系统 拆分成多个子系统。

一定程度上解决了系统难于维护的问题,每个团队可以负责维护自己的子系统,降低了维护成本,提升了开发效率。

也解决了系统扩容的问题 随着业务的扩展我们可以通过增加一个子系统来解决,不会影响其他的子系统。

同样也在一定程度上解决了对系统访问进行分流的问题,根据不同子系统的性质和访问量进行合理服务部署规划。

但是垂直应用架构中各个子系统存在着相同逻辑的一些业务代码(权限验证,日志记录,缓存,系统安全,系统报表….),不能共用,容易造成信息孤岛,重复造轮子。

3、分布式架构 -> 一个系统拆分为多个服务

随着垂直应用架构的子系统应用越来越多时,为了避免相同重复造轮子,我们将共用和核心的业务抽取出来,作为单独的系统对外提供服务, ,是得各个子系统都可以复用,就演变成了如上图所示的分布式何架构。

架构一套大型的,成熟的分布式系统 ,要涉及到许多中间件的引用和支撑系统,这些中间件和支撑系统统称为分布式系统的基础设施。

分布式系统的基础设施及架构

当然分布式系统的基础软件设施还包含且不限于像数据分析/离线计算/数据仓库/自动化运维等相关组件和框架,这些知识属于大数据和运维等知识,在此不再赘述。

分布式系统架构图

群:697579751【Java架构/分布式/高并发】(无经验勿扰)

分布式需要了解的重点

1、ActivMQ 分布式消息总线

在大型分布式系统中,在遵循JMS规范的前提下 ,进行系统之间的大规模异步消息通信和集中常用的通信机制。

能对JMS规范有深入的了解,以及分布式系统架构中的异步通信机制。

2、高并发编程必备之NIO基础

NIO的基本原理以及实现过程

能对传统IO和NIO的区别进行系统的了解并能学会NIO的实现原理

3、Redis内存数据库

在大型分布式系统中,怎样在高并发的情况下解决某些非结构化数据快速存取的解决方案。

能对非关系数据库和非关系数据库有个系统的了解 以及Redis内存数据库的基本数据类型和各自的应用场景。

4、高并发编程之NIO流行框架之Netty

NIO框架Netty的简介以及netty的应用场景。

能运用netty实现客户端和服务器端的基本通信。

5、Lucene 全文检索技术

在大型电商网站中,站内超过百万计商品目录的搜索解决方案。

能对全文检索技术有个初步的了解,以及Lucene在站内搜索应用中的底层操作原理。

6、Duboo分布式服务框架

在分布式系统中,Duboo框架的应用场景和应用方式。

能了解Duboo的基本概念和原理,以及在分布式系统中的应用和传统架构方式的区别。


相关文章:

  • unity探索者之微信登录,非第三方插件
  • json 解析豆瓣ApiURL
  • mongodb数据备份脚本和日志切割脚本
  • 资讯丨Linux基金会一行到访腾讯参观交流
  • 《设计模式之禅》--代理扩展:动态代理
  • IOLI-crackme0x01-0x05 writeup
  • 思考|自动化测试面试题第一波
  • 算法学习之路|欧拉回路初见
  • python3 _笨方法学Python_日记_DAY1
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 提高开发效率之VS Code基础配置篇
  • 【301】IDL与C#混合编程
  • 小总结
  • 【18】万魂杀服务器开发之SDK接入
  • 12c broker fast-start failover - ORA-16820解决
  • 2017年终总结、随想
  • Druid 在有赞的实践
  • es6--symbol
  • Git 使用集
  • HTTP中GET与POST的区别 99%的错误认识
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • Javascripit类型转换比较那点事儿,双等号(==)
  • Linux gpio口使用方法
  • Python爬虫--- 1.3 BS4库的解析器
  • Redis中的lru算法实现
  • Redux系列x:源码分析
  • SpringBoot几种定时任务的实现方式
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • 计算机在识别图像时“看到”了什么?
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • # .NET Framework中使用命名管道进行进程间通信
  • #HarmonyOS:软件安装window和mac预览Hello World
  • (HAL库版)freeRTOS移植STMF103
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (理论篇)httpmoudle和httphandler一览
  • (全注解开发)学习Spring-MVC的第三天
  • (十六)串口UART
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (轉)JSON.stringify 语法实例讲解
  • . NET自动找可写目录
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .NET 常见的偏门问题
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • :=
  • @基于大模型的旅游路线推荐方案
  • [ai笔记4] 将AI工具场景化,应用于生活和工作
  • [Android Pro] AndroidX重构和映射
  • [C# WPF] 如何给控件添加边框(Border)?
  • [C#]C# OpenVINO部署yolov8图像分类模型
  • [Delphi]一个功能完备的国密SM4类(TSM4)[20230329更新]
  • [i.MX]飞思卡尔IMX6处理器的GPIO-IOMUX_PAD说明