当前位置: 首页 > 科技观察

一篇了解Java微服务架构,WEB2.0,垂直架构,分布式架构,微服务架构

时间:2023-03-12 16:45:45 科技观察

Java微服务架构目录:了解开发环境&生产环境服务架构1.了解开发环境&生产环境1.1开发环境写的时候代码,大部分在WIN10/WIN7/Mac中。这些系统可以称为开发环境。为了更高效地开发应用程序,我们安装了很多软件,这会导致操作系统不安全,稳定性降低。2.1.生产环境(学习操作,Linux操作系统)在生产环境中,操作不会使用Win10/Mac。这种操作系统相对不安全,生产环境面向所有用户,一般使用专业的操作系统。市面上的操作系统大多是基于Linux的,也有Windows版的服务器操作系统Windows2003service02。WEB1.0&WEB2.02.1。在WEB1.0时期,由于带宽不足,此时大部分项目内容很少,用户也很少。甚至还有一些项目不需要对外开放。对安全性和稳定性要求不高。单一架构足以应对2.2.WEB2.0时代的到来WEB2.0实现了ADSL拨号上网,宽带速度最高可提升至8M。用户数量也在增加,一些门户网站也开始活跃起来。项目需要考虑安全性和稳定性。在基于单体架构的设计中,无法满足项目对WEB2.0的要求,需要在单体架构上搭建一个集群(多台服务器)。集群搭建完成后,可以提高项目的稳定性,并发量会增加。也能承受2.3。建集群后出现的问题。用户的请求应该发送到哪个服务器?如何保证请求均匀分布到不同的服务器上,从而缓解用户数量增长带来的压力。写项目的时候,如果用户登录成功,就把用户的logo存入session中。搭建集群后,数据共享问题非常大。如果直接去数据库查询,速度很慢。如何提高查询效率是每个人在搜索一些数据时都会遇到的问题。其中内容如'%#{xxx}%'2.4。如何解决以上问题(中间件)1.Nginx,用于解决用户请求的平均分配2.Redis,用于解决数据共享,实现缓存功能3.ElacticSearch,用于解决搜索数据的功能03.垂直架构例如项目包含三个模块,用户模块,产品模块,订单模块,产品模块。一般来说,产品浏览的产品模块流量最大。为了防止产品模块压力过大,直接有效的方法就是搭建集群。建立在单体架构的集群上,效果比较差。随着项目的不断更新,项目中的功能越来越多。最严重的可能会导致项目无法启动。关于单体架构,低内聚高耦合的完美体验。(开发要求高内聚、低耦合。)为了解决以上问题,垂直架构04.分布式架构4.1项目迭代随着项目的不断迭代,新老功能需要相互交互,而服务器和服务器之间的通信是必需的。项目一般分为三层ControllerServiceDao。导致程序变慢的重灾区一般是Service和Dao。建集群的时候确实是三层都建集群,效果不是很好。该体系结构已从垂直体系结构发展为分布式体系结构。分布式架构实现技术:为了解决各个服务之间的通信,国内有两种通信方式:1.Dubbo采用的RPC方式2.SpringCloud05采用的HHTP方式分布式架构常见问题5.1之间的异步通信服务使用分布式架构后,服务之间的通信是同步的。在一些不是核心业务的功能上,我们希望实现异步通信。为了实现服务之间的异步通信,需要学习MQ。MQ-RabbitMQ(消息队列)5.2服务间通信地址的维护随着服务越来越多,每个服务的访问地址都不一样。protocol://address:端口号由于我们的模块很多,模块搭建的集群数量增多,其他模块会需要维护各种ip地址等信息,导致项目维护性极低,耦合度高,还有不能实现负载均衡的Functions需要用一个技术来解决目前的问题:Eureka注册中心帮我们管理服务信息:实现通信地址维护Robbin可以帮我们实现服务间的负载均衡:实现服务间的负载均衡5.3服务降级在上面的架构中,如果订单模块有问题。只要涉及订单模块的功能,所有功能都不可用。可能会导致服务端提供的线程池被耗尽,无法给用户友好的提示。为了解决以上问题,使用Hystrix来处理。Hystrix提供了线程池隔离的方式来避免服务器线程池被耗尽。在a服务不可用时,可以提供断路器来解决问题。使用Hystrix帮助我们实现断路器和隔离,最终实现服务降级。Eureka、Robbin、Hystrix都是SpringClod中的组件。5.4海量数据海量数据最终会导致数据库无法存储所有内容。即使数据库可以存储海量的数据,在查询数据时,数据库的响应也极其缓慢。在用户高并发的情况下,数据库承受不了。为了解决以上问题,可以基于MyCat实现数据库的分库分表。06.微服务架构虽然每个模块都独立开发,比如商品模块,但压力最大的还是商品查询。将项目再次拆分成单独的模块的方式可以称为微服务架构。微服务架构其实属于分布式架构的6.2容器化技术,目的是为了解决模块过多,增加运维成本的问题。使用Docker容器化技术帮助我们在后面学习的时候管理很多软件,我们可以使用Docker来帮助我们跟进软件。6.3分布式架构下的其他问题分布式架构帮我们解决了很多问题,但是也带来了更多的问题:1.分布式事务:最传统的事务操作方式是通过Connection操作连接对象,Spring也提供了声明式事务操作.为了解决事务问题,会使用RabbitMQ或者LCN来解决。2.分布式锁:传统的锁方式,一种是synchronize或者Lock锁,在分布式典型环境中,传统锁是无效的。为了解决锁问题,后面会使用Redis或者Zookeeper来解决3.分布式任务:在传统的定时任务下,由于分布式环境的问题,任务可能会重复执行,一个比较大的任务希望被分裂。为了解决这个问题,后面会用到Redis+Quartz或者Elastic-Job。