栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

框架演进笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

框架演进笔记

框架的演进

个人笔记。
一.开发环境&生产环境

1.1开发环境

       平时在写代码时,大多是在Win10/Win7/Mac, 这些系统都可以称呼为开发环境,
       咱们会为了跟高效的开发应用程序, 安装很多很多软件,会导致操作系统不安全,稳定性降低。

1.2生产环境

​    在生产环境中,操作系统不会采用Win10/Mac,这种系统相对不安全,生产环境是要面向全体用户的,
	一般会采用专业的操作系统,
	​ 大多市面上使用的都是基于Linux的操作系统,还有Windows版本的服务器操作系统,Windows 2003 service
 	 第一知识点,学会如何操作Linux操作系统。

2.WEB1.0&WEB2.0阶段
​ 2.1WEB1.0时期

	在WEB1.0时期,由于带宽不足,这时的项目是内容少,用户量也不多,甚至有一些项目不需要对外开发,
	对安全性和稳定性的要求是不高的.单体架构就足以应对
	单体架构图

2.2WEB2.0时期

	随之到来的WEB2.0,实现了ADSL拨号上网,宽带提速,最高可以到达8M,用户量也就不断增加,
	一些门户网站也开始活跃,项目就需要考虑安全和稳定性 在基于上面的单体架构图中,
	无法满足WEB2.0对项目的需求,
	在单体架构的基础上去搭建集群在搭建集群之后,可以提升项目的稳定性,并且发量增加,也可以承受住
	集群架构图


2.3搭建集群后发生的问题

	1.用户的请求到底要发送到那台服务器上,如何请求平均的分发给不同的服务器,从而缓解用户量增加的压力
	2.编写项目时,如果用户登录成功了,将用户的标识放到Session域中,在搭建集群之后,数据共享问题,
	3.当数据量特别大时,如果还直接去数据库查询,速度很慢,如何提升查询效率
	4.针对大家在瘦素一些数据时,where content lik '‘%#{xxx}%’
	5....
	为了解决上述的问题,需要使用到三门技术,
	Nginx-解决请求平均分发
	Redis -解决数据共享并实现缓存功能
	ElasticSearch- 解决搜素数据的功能,
	集群架构图


3.垂直架构

	比如项目包含了三个模块,用户模块,商品模块,订单模块.
	商品模块压力过大,一般最直接有效的方式就是搭建集群.在单体架构的集群上去搭建,效果相比较差.随着项目的不断更新,
	项目中的功能越来越多,最严重可能会导致项目无法启动.
	关于单体架构中,完美的体现了低内聚,高耦合。
	为了解决上述各种问题,演进出了垂直架构.
	垂直架构图


4.分布式架构
4.1项目迭代

	随着项目的不断的迭代,新老功能之间需要相互交互,服务器和服务器之间是需要通讯的
	项目一般是分为三层的,Controller,Service,Dao.导致程序变慢的重灾区,一般是Service和Dao,在搭建集群时,
	确实针对三层都搭建集群,效果不是很好。
	架构从垂直架构演变到了分布式架构.
	分布式架构落地的技术.
	国内通讯的方式有两种:
		Dubbo				RPC
		SpringCloud   	HTTP
	分布式架构图 


5.分布式架构常见问题
5.1服务之间的异步通讯

	使用分布式架构之后,服务之间的通讯都是同步的,
	在一些不是核心业务的功能上,咱们希望可以实现异步通讯
	为了实现服务之间的异步通讯,需要学些MQ-RabbitMO
	分布式架构下,实现异步通讯图


5.2之间通讯地址的维护

	由于服务越来越多,每个服务的访问地址都是一样的.
	协议:地址:端口号
	由于模块繁多,并且模块搭建的集群数量增加,会导致其他模块需要维护各种ip地址信息,导致项目的维护性极低,耦合性变高,
	并且无法实现负载均衡的功能,
	需要使用使用一个技术来解决当前问题:
		Eureka注册中心帮助我们管理服务信息
		Robbin可以帮我们实现服务之间的负载均衡.
	Eureka实现通讯地址维护
	Robbin实现服务之间的负载均衡


5.3服务降级

	在上述中的架构中,如果说订单模块出现了问题
	只要涉及到订单模块的功能,全部都无法使用.
	可能会导致服务器提供的线程池耗尽,给用户友好提示都是无法做到的.
	为了解决上述的问题,使用Hystrix处理
	Hystrix提供了线程池隔离的方式,避免服务器线程池耗尽,在一个喝完无法使用时,可以提供断路器的方式来解决.
	使用Hystrix帮我们实现断路器和隔壁,并最终服务降级

	Eureka,Robbin,Hystrix都是SpringCloud中的组件

5.4海量数据

	海量数据与会导致数据无法存储全部的内容.
	即便数据库可以存储海量的数据,在查询数据时,数据库的响应时及其缓慢的.
	在用户高并发的情况下,数据库也时无法承受的。
	为了解决上述问题,可以基于MyCat实现数据库的分库分表
	基于MyCat实现分库分表


6.微服务架构
6.1 微服务架构

	虽然已经将每个模块独立的做开发,比如商品模块,压力最大的是商品的查询。
	在单独模块中再次拆分项目的方式就可以称之为微服架构。
	微服务架构,在分布式架构的基础上再次拆分


6.2 模块过多,运维成本增加

	为了解决模块过多,运维陈本增加的问题。
	采用Docker容器技术来帮助我们管理。
	后期在学习的时候,也需要大量的软件,可以使用Docker来帮助我们安软件.


6.3 分布式架构下的其他问题

	分布式架构帮助我们解决了很多的问题,但是随之也带来了很多问题
	1.分布式事务:
		最传统的操作事务的方式,是通过Connection连接对象的方式操作,Spring也提供了声明事务的操作.为了解决事务的问题,
		后续会使用到RabbitMQ|LCN方式来解决。
	2.分布式锁:.
		传统的锁方式,synchronized|Lock锁,在分布式环境下,传统的锁是没有效果的.为了解决锁的问题,
		后续会使用到Redis|s|Zookeeper来解决.
	3.分布式任务:
		在传统的定时任务下,由于分布式环境的问题,可能会造成任务重复执行,一个比较的任务,需要可以拆分
		为了解决这个问题,后续会使用到 Redis + Quartz | Elastic-Job.
	总结 
	技术在演进。如何学习和怎么样学习,是一个问题。 
	学习三部曲,是什么,为什么,怎么做。
	是什么, 微服务,
	为什么, 现学的架无法解决现有的问题。 所有出现了微服务架构
	怎么做, 如何去做。学习。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/860013.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号