博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分布式部署引发的问题
阅读量:7285 次
发布时间:2019-06-30

本文共 973 字,大约阅读时间需要 3 分钟。

1.模块间的相互调用

系统A和系统B分别部署在不同的服务器上!那么他们之间是怎么相互调用的呢?

Java中常见的远程调用方式:

Socket、Http、TCP、UDP、RPC、RMI、JMS、WebService……

常见的框架介绍

1:Hessian:类似于RMI,使用二进制消息来进行远程调用。与RMI不同的是,它的二进制消息可以在非Java中使用,它实现了一种跨编程语言的对象序列化方法
2:Burlap:是一种基于XML的远程调用技术,但和其他基于XML的远程技术(如SOAP或XML-RPC)不同,Burlap的消息结构是尽可能的简单,不需要额外的外部定义
语言(如WSDL)
3:Dubbo:阿里开源的分布式服务框架,通过高性能的RPC实现远程服务的调用,可以和Spring框架无缝集成,其架构类似于ESB。
4:Spring的HttpInvoker:类似于RMI,基于HTTP协议来进行远程调用,使用java的序列化机制,要求客户端和服务端都是基于Java的
5:WebService

方案的选择

一:如果系统全部为内部可控的
1:量级不太大,可以考虑使用Hessian/ Burlap
2:量级较大,且交互要求较高,那么dubbo是一个现成、成熟的选择
缺点:需要很多额外的成本,比如学习成本,按需改进的成本等
3:交互要求并不高,主要是相互调用的需求,可以考虑自己实现
优点:完全按需定制,完全可控,升级、改进和完善都方便
缺点:需要投入开发成本,且完善成熟有一个过程
二:系统包含很多外部的应用,不能全部可控,且很多异构的系统
1:如果要求不是很复杂的话,WebService 是不错的选择
2:如果要求非常复杂,且涉及很多业务流,那就选择一个ESB平台

webservice的使用原理如下

一种更流行的方式是采用http+josn的方式

更多需要考虑的问题

1:长连接,连接池,可以考虑HttpClient
2:高并发,多线程池,可以考虑使用apache的common-pool
3:快速的网络传输,可以考虑使用NIO,比如:Mina框架,Netty框架等
4:大数据量,数据压缩传输,可以考虑Java的GZip
5:可用性、稳定性、容错
6:分布式的事务
7:访问安全、数据安全等
8:服务的集群,服务的注册和管理等
……

 

转载地址:http://btpjm.baihongyu.com/

你可能感兴趣的文章
Thrift 基础架构
查看>>
many-to-many
查看>>
java中的多态
查看>>
Python 函数式编程--装饰器
查看>>
11月28号
查看>>
DAS、NAS、SAN、iSCSI 存储方案概述
查看>>
为VMware esxi主机配置系统日志记录
查看>>
给批量用户设磁盘配额
查看>>
Docker常见问题总结(持续更新)
查看>>
5-6单元练习
查看>>
以普通用户启动的Vim如何保存需要root权限的文件
查看>>
客户端和浏览器都不能连接SVN服务器
查看>>
计划任务
查看>>
华为交换机的命令行
查看>>
限制你的指令只能通过特定的方式来调用
查看>>
男神的补习
查看>>
while数字死循环
查看>>
备份架构——三种基本备份拓扑
查看>>
关于visual assist x插件不能用的解决方案
查看>>
Linux iptables:规则组成
查看>>