发布信息

java+Spring+myBatis的开发模式分析及发展流程!

作者:软荐小编      2023-07-10 01:06:40     113

一开始,架构大多是和业务相关的。 如果只是一个简单的图书管理系统、选课系统或者一些简单的财务系统,就不需要分布式。 只有小公司和高并发的业务才需要分布式的帮助。 事实上,框架本身必须与业务模型紧密配合才能发挥作用。

长期以来,java 是最流行的编程语言。 我想,一方面是因为java可以用来开发网站的前端程序,另一方面java可以用来开发android等客户端程序。 其实很多人会说java天生就有网络属性,有很好的分布式基因。 这应该是一个认知错误。 所谓分布式是基于tcp/ip网络的。 其发展的原因是出于稳定性、性能和业务扩展的需要。 单一服务器远远不能满足业务需求。 对此,其他语言也可以做到这一点,比如python、go、erlang等。 然而,对于企业来说,一个不可忽视的现实是,市场上合格的java工程师很多,而能够独立使用的python、go、erlang项目却很少。 后期其他编程语言会逐渐转移到java。 不是技术不允许,而是人才不允许。 脚本语言太自由,陷阱太多。 如果你不注意,你可能会埋下地雷。 然而Java语言规范和第三方库存在很多错误。 虽然有错误,但很快就会暴露出来。 这也是Java的一个很好的优点。

说到网站前端开发,很多人都会选择java+Spring+myBatis的开发模式。 这是可以理解的。 只是随着业务的快速发展,网站整体架构也在快速迭代。 大家不妨利用这段时间简单梳理一下开发流程。

1、单服务器模式

所谓单服务器是指将http服务器软件、静态文件(主要是图片,还有html、css、js文件)、mysql软件安装在一台服务器上。 许多大学的课程都是这样设计的。

2.多服务器模式

当文件越来越多时,单台服务器已经远远无法支撑业务发展。 此时,http服务器软件、文件服务器和数据库软件将安装在不同的服务器上,并使用tcp/ip相互连接。 企业内部的宽带速度远高于外部购买的宽带。

3.添加缓存服务器

随着业务的发展,用户对数据速率的要求越来越高。 如果每次访问数据库都直接访问数据库,效率可能会很低。 在实际场景中,你会发现读取数据的请求比更改数据的请求多,所以此时添加一些nosql缓存服务器可以有效提高用户体验。

4.反向代理服务器

单个http服务器的性能总是有限的,因此在实际业务场景中通常使用nginx作为代理服务器。 通过代理软件,用户的数据请求将被均匀分发到不同的http服务器。 其实此时nginx已经成为了系统的一个难点,所以为了保护nginx软件架构师培训视频,通常会安装多台nginx服务器,并使用keepalive软件来保证nginx宕机时的手动切换。

5.CDN服务器

如果你安装过不同联通运营商的宽带,就会知道,一个联通运营商旗下的PC如果访问另一个联通运营商的服务器,速度是非常慢的。 所以更务实的做法就是把常用的文件,尤其是静态文件,安装在离用户最近的运营商服务器上。 这就是CDN服务器设计的初衷。

6.分布式文件服务器

如果网站后台文件过多,这样的单一服务器远远不能满足用户的要求。 这时,分布式文件服务器应运而生。

7.分布式数据库服务器

同样,当数据积累到一定程度时,单台服务器也远远不能满足要求。 而且,单一服务器是比较危险的。 一旦服务器宕机,后果显然是难以想象的。 这时候通常有两种解决方案,一种是分库分表,官方的数据库分布在不同的服务器上,或者同一个表的内容分布在不同的服务器上,插件可以帮助我们做到这一点,如MySqlProxy; 另一种方式是真正的分布式数据,比如 TiDB。 这时用户不需要关心数据是如何分布的,因为底层软件可以灵活地将数据存储在不同的服务器中。 每种方法都有其相似点和不同点,您可以灵活运用。

8. 微服务部署

之前的代码部署是安装在http服务器中的,一旦一个小功能出现故障,就可能导致整个http服务器出现故障。 因此,针对这些情况,现在提出了微服务器模型。 其基本思想与rpc类似。 http服务器收到nginx的用户请求后,并不直接运行,而是通过rpc向微服务器发出请求,而是等待微服务的结果。 虽然微服务中的服务都是小企业。 单个微服务不一定是一台服务器,也可能是基于zookeeper的多台服务器。 由于数据量的大或小,也不一定。

9.消息服务器

不同服务器之间需要进行数据通信。 为了性能,服务器之间的通信往往是异步的,因此消息服务器充当缓冲区和信息处理功能。 消息服务通常会定期处理或仅在满足某些业务条件时处理。 微服务之间的通信需要借助消息服务器。

10.监控服务器

服务器运行过程中可能会出现各种情况。 服务器的CPU是多少,RAM还剩多少,存储怎么样,使用了多少带宽,当前运行什么业务。 这种信息需要通过监控服务器来完成。

11.运维服务器

当产品开发完成后,此时通常会进行小范围部署,即小规模发布。 没有大问题之后,就会进行大规模的推送。 这是一种常见的技术。 运维的朋友不仅需要线上产品,还需要线下产品、灰度发布、24小时检查服务器的运行情况。 当业务扩展时,需要及时部署和添加新的服务器。 当出现问题时,他们需要将当前服务器上的业务转移到其他机器上,而用户通常感觉不到这些变化。

12. 爬取和搜索服务器

像一些短视频公司,除了生产自己的内容外,另一个非常重要的工作就是抓取全网。 内容获取后,会与数据库固化。 这时候就需要搜索服务器的帮助了。 关于搜索,现在有一些开源软件可用,例如solr。

13. 推荐服务器

除了用户想要搜索的内容之外,系统通常还会推荐一些相关的内容。 很多朋友都会使用今日头条或者抖音,那么上面的推荐服务器就会承担起非常重要的一部分工作。 推荐服务器可以做得非常简单,也可以做得非常复杂。 这个时候就看它是否是公司的主营业务了。 事实上,不仅像今日头条这样的公司在乎推荐,一些电商网站也很在意推荐服务,因为这会在很大程度上减少公司的销售额,提高公司的效率。

14.备用服务器

服务器并不总是稳定工作,所以这个时候就需要规划一些备用服务器。

里面讲了这么多,你会发现现在的企业级网站的前端自然已经很复杂了。 大量的业务量和用户的需求导致整个软件架构仍然在发生变化。 一个好的软件架构不仅可以满足当前的业务需求,还可以为未来的扩展奠定基础。 至于jvm、jdk、mysql、mysqlproxy、tomcat、Spring、TiDB、nginx、keepalived、zookeeper、solr、fastDFS、docker、hadoop、vmware等软件,那些都是为了框架,而真正的时候用过,学习一下就OK了。 其实使用的时候,可以用java,也可以不用java。 这个可以根据自己的情况灵活安排。

另外,关于jvm&jdk可以多说一句,它只是一种编程语言,不要神化或者小看它。 和很多其他编程语言一样,比如lua,也有lua&luac,其中lua负责运行虚拟机、垃圾回收等,luac负责编译整个编程语言。 处理好java&javac,如果能多看看jdk源码,用javap调试反汇编代码就更好了,对个人发展有很大好处。

用java来学习分布式,一方面是使用最广泛的项目,在这方面经验最多,另一方面也是因为java语言本身使用最广泛,工具最多。 大家可以根据自己的情况逐步学习。 从软件架构的角度来看,java和发行版的话题可以给你带来很多积极有益的思考。

当谈到架构或软件框架时,这与操作系统无关,与编译器和编程语言关系不大。 只是有时候,为了部署的方便,选择了平台和语言。 分布式架构中存在成功、失败、超时三种情况软件架构师培训视频,而超时是最大的问题。 所以,如何处理这个超时问题才是重中之重。 其实很多同学都听说过上限理论,即高可用、性能、一致性,通常两者只能选其一。 现实是高可用性>性能>一致性。 一个简单的反例就是,很多时候我们在前台提交数据,后台需要很长时间才能刷新。

其实分布式调试也是一个问题。 如果程序在运行过程中遇到网络故障问题。 这可能是客户端的问题,也可能是调度服务器的问题、Web服务器的问题、消息服务器的问题、微服务的问题、缓存的问题、数据库的问题等等。配送仍能满足效率和流量、存储的要求,同时也会带来其他需要解决的问题。

据悉,大家应该都知道,高并发、高性能也是需要客户端的配合的。 至少不能让所有的客户端都在一个ip、一个端口上序列化,这样不是不合适吗? 事实上,客户端优化也是一项非常重要的工作。

相关内容 查看全部