「一句话经典」从Spring到SpringMVC再到JavaEE开发颠覆者Spring Boot,最后佛法无边Spring Cloud;只不过却成了Node.js的笑柄
从Spring到SpringMVC再到JavaEE开发颠覆者Spring Boot三者的定位来看,
一、正面解读:
Spring主要是基于IOC反转Beans管理Bean类,主要依存于SSH框架(Struts+Spring+Hibernate)这个MVC框架,所以定位很明确,Struts主要负责表示层的显示,Spring利用它的IOC和AOP来处理控制业务(负责对数据库的操作),Hibernate主要作用是数据的持久化到数据库。
SpringMVC是基于Spring的一个MVC框架,用以替代初期的SSH框架;(spring Framework本身没有Web功能,Spring MVC使用WebApplicationContext类扩展ApplicationContext
,使得拥有web功能)。
Spring Boot是基于Spring4的条件注册的一套快速开发整合包
·三者的发展与联系:
Spring 最初利用“工厂模式”( DI )和“代理模式”( AOP )解耦应用组件。大家觉得挺好用,于是按照这种模式搞了一个 MVC 框架(一些用 Spring 解耦的组件),用开发 web 应用( SpringMVC )。然后有发现每次开发都要搞很多依赖,写很多样板代码很麻烦,于是搞了一些懒人整合包( starter ),这套就是 Spring Boot 。
·升级云-Spring Cloud:现在是大数据、云时代,上云是必然选择,那么Spring Cloud应运而生,
1)配置服务:其实Spring Cloud就是Config Server实现分布式开发,它有在分布式系统开发中外部配置的功能。通过Config Server,我们可以集中存储所有应用的配置文件。
2)服务发现:它通过Netfix OSS的Eureka来实现服务发现,服务发现的主要目的是为了让每个服务之间可以相互通信。Eureka Server为微服务注册中心。
具体方案是 Spring Cloud是用猪姐的方式提供了 Eureka服务端(@EnableEurekaServer)和客户端(@EnableEurekaClient)两个带注解的端实现。
3)路由网关:Spring Cloud是通过Zuul来实现的,支持自动路由映射到在Eureka Servers上注册的服务。提供来注解@EnableZuulProxy来启动路由代理。
3)负载均衡:Spring Cloud提供来Ribbon和Feign作为客户端的负载均衡。
二、负面解读与Node.js带来的光芒
数十年来, Spring 的努力就是为了减少复杂度,解耦,少些一些代码。我的感觉是,复杂度不会凭空产生,也不会凭空消失,只会从一个地方转移到另一个地方。虽然掌握 Spring 可以减少很多多余的工作,但是掌握 Spring 本身也变成很复杂的一件事。 Spring 的 XML ,注解配置, EL 表达式这种 DSL ,把很多很简单的事情搞复杂了,当 Spring Boot 自动配置失灵时就带来了更多的麻烦。 这就是Spring Boot的软肋。
我感觉 Node.js 挺好用, po 为什么不试试呢?
三、测试方案
如果需要写个压力测试的模拟器,用nodejs好还是springboot?
那这两部分可以分开
client的部分用jmeter或者其它什么工具发请求
server的部分用node或者其它的server简单实现一下