首页互联网技术J***a架构互联网技术,j***a架构互联网技术有哪些

J***a架构互联网技术,j***a架构互联网技术有哪些

cysgjjcysgjj时间2024-10-05 17:33:06分类互联网技术浏览29
导读:Java大型互联网架构-如何正常掌握分布式系统的大部分技术?Java大型互联网架构-如何去实现一个分布式定时任务?Java大型互联网架构-如何正常掌握分布式系统的大部分技术?看职位吧。如果你是做PD,那么主要是服务代码的无状态编程,redis缓存,一些反向代理软件的配置和服务化工具的配置。如果是做架构,那就不仅是知道怎么用,还要知道运……...
  1. Java大型互联网架构-如何正常掌握分布式系统的大部分技术?
  2. Java大型互联网架构-如何去实现一个分布式定时任务?

java大型互联网架构-如何正常掌握分布式系统的大部分技术

职位吧。如果你是做PD,那么主要服务代码的无状态编程,redis缓存,一些反向代理软件配置和服务化工具的配置。如果是做架构,那就不仅是知道怎么用,还要知道运行原理,知道为什么,出了问题如何解决,如何扩展。对技术的基础要求掌握比较深。目前最常用的反向代理软件一般是nginx,服务化软件基本阿里的 dubbo,基于 spring boot的 spring cloud。

分布式是一种思想,旨在将原本的单节点应用分布到不同服务器节点,以求获得更大的运算能力和更高的性能

分布式技术太广了,涉及到将多个服务器的CPU,内存硬盘等组成一个统一的整体,而服务,计算分布在不同的服务器上,服务之间的通信,分布式之后的全局唯一性,数据一致性,分布式事务等等,每一项可以说在实际工作中都会有大量的坑,不经历过很难明白,下面是我的粗浅理解:

Java架构互联网技术,java架构互联网技术有哪些
图片来源网络,侵删)

分布式存储:

数据库:数据库的主从***,读写分离,分库分表这些东西,都是通过数据分布在不同的节点,以实现数据查询与修改的更高的效率,同时防止数据在单一节点上因为某些原因的丢失,推荐自己搭建mysql主从,使用spring aop代码开发或者组件搭建读写分离,使用mycat等组件实现分库分表!

文件:分布式文件存储系统,有HDFS和Gluster等大型的系统,提供更好的容错性和扩展能力!

Java架构互联网技术,java架构互联网技术有哪些
(图片来源网络,侵删)

分布式服务:对外提供高度内聚,透明,内部灵活,分散的服务集群!

前后端分离:将前后端的服务拆分在不同的集群中,以保证前后端技术架构上的分离,使用node.js部署前端服务,与用户进行交互,后台通过某种通信协议,提供动态数据给前端调用

后端微服务:以单独业务为导向,建立起细粒度的服务,同时服务之间通过服务发现组件进行通信,在用的springcloud还不错,集成了***,熔断器,负载均衡等,可以进行快速的搭建!

Java架构互联网技术,java架构互联网技术有哪些
(图片来源网络,侵删)

服务之间的通信通常有服务暴露直接调用(zk.eureka等服务注册与发现),异步消息传输(kafka等消息队列)!

分布式缓存:缓存通常是内存型缓存,可以用来快速的存取数据,减少数据库的压力!分布式缓存通常使用主从***,高可用方式搭建起集群,提高整个缓存系统的容纳能力,也避免单一缓存节点宕机对整个服务的影响,用的较多的是redis集群(基于redis的集群搭建,请参考***s://***.wukong***/question/6493663252021510414/)

我们公司开发的程序用的是阿里的分布式框架dubbo。建议你先从某个知名框架去学习了解它的用法,熟悉之后再去了解框架具体涉及到的技术,这样理解起来会比直接学底层技术更有效率,更容易使人理解。等你对该框架了解的差不多了,你对技术的掌握也达到一定高度了。

分布式系统涉及到的理论知识及技术点比较多,以致于很多童鞋都说,分布式系统的学习是入门容易、深入难,通过网络搜索到的知识点较为零散,难以系统化学习、融会贯通。本篇Mike将从以下几个方面分享,带着大家先窥探分布式的全貌,希望为大家厘清分布式学习之路的方向与具体路径。

分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。有一种说法:分布式系统是若干独立计算机的组合共同对用户提供服务,但对于用户来说,这些计算机就像是单个相关系统。

分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据。

1、透明性

分布式的特征之一是向用户隐藏系统的内部组织结构,各种计算机之间的差别、通信方式的差别都被隐藏了。使用分布式系统的用户不关心系统如何实现,以及看到的数据来自哪里,用户在任何[_a***_]都能以同一种方式与分布式系统进行交互。

2、可扩展性

可扩展性是指当增加或减少任务时,分布式系统的处理能力要能够很方便地随之增加或减少。即:能够高效便捷地通过增加或减少机器的数量,来应对数据量的增长或减少。

Java大型互联网架构-如何去实现一个分布式定时任务?

谢邀!

目前,网络上有很多开源的、现成分布式定时任务解决方案例如Spring batch、elastic job、tbschedule、quartz等,都可以直接使用,因为开源也可以做扩展。

希望对你有所帮助!

来,借此机会给大家讲一讲这么多年我和定时任务/分布式定时任务的爱恨情仇。

为方便讲解,先给大家讲一个真实的需求,这是我在第二家公司的一个项目,定时任务每天晚上执行,把原始的业务数据,加工处理成待发送的短信。

比如原始数据是:姓名小明,所在地北京,电话13800000000,账单最后还款日期2018年4月30日。

加工后的数据是:亲爱的小明,您的账单最后还款日期为2018年4月30日,请提前缴费。

定时任务框架里面,最有名的就是quartz了,相信大部分J***a程序员都用过。

我们项目最开始也用的是quartz,只有一个服务器跑定时任务。但是待处理的数据越来越多,定时服务执行的时间也越来越长,终于有一天,定时任务从晚上跑到了第二天白天也没有跑完,耽误了短信的发送。

可以给你提供一个很简单的实现方式,比如你有10台服务器同时执行定时任务,创建一个数据库序列,每个定时任务执行业务代码之前都去取一次序列值,当值为10的整数倍时执行,其他的不执行。

[免责声明]本文来源于网络,不代表本站立场,如转载内容涉及版权等问题,请联系邮箱:83115484@qq.com,我们会予以删除相关文章,保证您的权利。转载请注明出处:http://www.wnpsw.com/post/20304.html

分布式系统定时
科技创新季报,科技创新季报怎么写 数字技术与互联网技术