主流架构SSM(Spring+SpringMVC+myBatis--->或SpringBoot+myBatis)统称SSM
Struct2:基本没有人使用,除非老项目维护,Struct2以前也是SSM或SSH的一部分,现在早已过时
SSH(过去:struts+spring+Hibernate,现在Spring+SpringMVC+Hibernate):至于SSH就不主张使用,因为 Hibernate把sql语句封装好了,有时候会sql语句会重复,不利于sql语句的优化,myBatis是自己设计sql语句在性能上肯定是自己写sql高.
Maven:Maven是一个项目管理工具,主要是管理项目中所需要的依赖包,现在的项目可以说基本全部是Maven项目,以前的老项目都是一个一个向库里拷相对应的jar包及其不方便,现在不管使用ssh还是ssm 都会使用Maven
SpringBoot集成了Spring+SpringMVC 是当前相当流行的技术,只要是新项目很多技术经理都会采用,开发方便但是值得一提的是SpringBoot的约定高于配置很多东西都要按照他约定的才行,特点如下
- 创建独立的Spring应用程序
- 嵌入的Tomcat,无需部署WAR文件
- 简化Maven配置
- 自动配置Spring
- 提供生产就绪型功能,如指标,健康检查和外部配置
- 绝对没有代码生成和对XML没有要求配置
下面主要大致概括几种项目类型使用的技术路线
类型1:WMS(仓库管理系统):
技术路线:SSM+Maven+EasyUI
类型2:CRM(客户关系管理系统):
技术路线:SSM+Maven 前端使用Bootstrap框架
类型3:P2P/一元夺宝:
技术路线:SSM+Maven+Redis+Nginx
Redis:Redis是一个高性能的key-value内存存储数据库;
redis可以把数据存储在内存中,也可以持久化到磁盘上;
redis不是一个适用于任何场景的存储应用;
Redis的优势:
性能极高 – Redis能支持超过 10W次每秒的读写频率。
丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
原子性 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作合并后的原子性执行。
下面是官方的bench-mark数据:
测试完成了50个并发执行100000个请求。
设置和获取的值是一个256字节字符串。
Linuxbox是运行Linux2.6,这是X3320Xeon2.5ghz。
文本执行使用loopback接口(127.0.0.1)。
结果:读的速度是110000次/s,写的速度是81000次/s。
新浪微博(全球最大的redis集群)淘宝 腾讯微博都在使用
Nginx:原理就是反向代理
作用:1.请求分发(不同请求分发到不同服务器上,例如www/aa... www/bb... www/cc... 可以设置aa请求到指定服务器 bb请求到指定服务器 cc请求到指定服务器)
2.负载均衡 (设置负载均衡策略 比如ip_Hash不同的ip访问不同的服务器 每次都会访问固定的服务器 这样对应的ip的缓存也会)
3.处理静态资源 可以将所有的静态资源 如:图片上传到指定的路径的文件夹里
类型4:电商
技术路线:SSM+Maven+Redis+Nginx+Dubbo+ActiveMQ
Dubbo:dubbo是一个阿里巴巴开发的开源分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案
Dubbo的优势:
1、使用简单
2、部署轻盈
3、方便二次开发
Dubbo的应用场景:当网站变大后,不可避免的需要拆分应用进行服务化,以提高开发效率,调优性能,节省关键竞争资源等。
当服务越来越多时,服务的URL地址信息就会爆炸式增长,配置管理变得非常困难,F5硬件负载均衡器的单点压力也越来越大。
当进一步发展,服务间依赖关系变得错踪复杂,甚至分不清哪个应用要在哪个应用之前启动,架构师都不能完整的描述应用的架构关系。
接着,服务的调用量越来越大,服务的容量问题就暴露出来,这个服务需要多少机器支撑?什么时候该加机器?
使用dubbo前要先安装使用zookeeper注册服务 分布式下有很多服务
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务
注册中心的作用:
1、服务端服务的注册和客户端服务的调用
2、提高系统的可用性
3、提高系统的可伸缩性
4、集中管理服务
ActiveMQ:消息中间件是在分布式环境中,两个或多个独立运行的系统之间,提供消息通讯作用的中介。(类似的还有RocketMQ,Kafka)
消息中间件的主要应用场景:
在多个系统间进行通讯的时候,通常会要求:
(1)可靠传输,数据不能丢,有的时候,也会要求不能重复传输
(2)异步传输,否则各个系统同步发送接收数据,相互等待,造成系统性能低下
我简单列举几个吧:
商品系统在确认订单后,发送一个“生产订单”的主题消息到ActiveMQ,订单系统收到该主题消息后会做相应的生产订单及相关的所有业务操作。
在支付界面中,点击确认支付,调用第三方支付接口,支付成功后回调我们的支付系统,然后支付系统会发送一个“支付成功”的主题消息到ActiveMQ,仓储系统收到该主题消息后会做库存的相关操作及其相应的业务。
在网页静态化中,我们修改了某些数据,那么会发送一个“生成静态化”的队列消息到ActiveMQ,负责生成静态化页面的方法接收到该消息后,从新生成静态化页面,从而达到更新页面数据的目的。
不管什么应用基本上都是使用这些技术 SSM是主流 越来越多的人使用SpringBoot,搜索率在2016年就高于SpringMVC