RPC远程服务调用的技术棧:
- JDK RMI:JDK内置序列化和反序列化协议。
没被广泛运用:a.不能跨语言;b.使用底层网路协议,没有http可读性及广泛性。
2.Hessian及Burlap:基于HTTP传输。
Hessian:将对象序列化成与语言无关的二进制协议;
Burlap:将对象序列化成与语言无关的XML数据,可读,但是沉重;
3.Spring HTTP Invoker
重用了JDK内置对象序列化技术传输对象,与RMI一致,但是通过HTTP通道传输数据,无法跨语言。
SOA服务化框架
1.Dubbo:可服务监控,服务治理和服务调度等能力。
默认支持多种序列化协议和通信编码协议,默认使用Dubbo协议传输Hessian序列化的数据。
Dubbo使用Zookeeper作为注册中心来发现注册服务,通过客户端负载均衡来路由请求,
负载均衡的算法:随机、轮询、一致哈希、最少活跃调用等。Zookeeper基于java没法跟其他语言的服务化平台相互调用。
Dubbo缺点:体量大时有网络广播风暴,并且对熔断、限流、服务隔离没有完全体,包括监控这些。这方面我爱SpringCloud全家桶!
2.HSF好舒服,淘宝滴东西。
3.Thrift facebook对,支持跨语言服务开发和调用。
4.AXIS 太早 SOAP协议通常使用HTTP传输XML,性能底下,协议较为复杂臃肿。
微服务
1.Spring Boot :配置部署方便至极。独立。可以最大化自动配置Spring。
Spring Boot与传统 JEE Tomcat容器 反着来, 它将容器嵌入Jar包,如:Tomcat、Jetty、Netty
2.Netflix:主要提供来服务发现、断路、路由、客户端负载均衡。
其中Hystrix框架提供来微服务架构所需对容错机制的解决方案和设计模式,熔断器~
大大简化容错的实现,包括服务的分组和隔离、熔断和防止级联失败,限流机制,失效转移,监控机制等。
3.Spring Cload Netflix 包括服务发现组件Eureka、容错性组件Hystrix、智能路由组件Zuul、客户端负载均衡组件Ribbon、Feign通过声明的方式即可导入服务代理。
关于最简单的Spring Boot 、Spring Cloud 请看方志朋。。https://blog.youkuaiyun.com/forezp/article/details/70148833