`
lobin
  • 浏览: 115305 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
Rss 文章列表
再谈分布式服务及框架。 分布式服务最初是从RPC演变过来的,客户端调用远程方法(应用),本质上是远程调用的可用性问题。   假设服务还是以前的那种单体应用结构,它的业务承载能力毕竟有限,它支持多少并发?不考 ...
服务网格 vs 去中心化的服务发现机制的分布式服务
在很多远程方法调用(RPC)实现中,在开发的时候,通常会为远程对象生成对象的存根(Stub)和骨架(Skeleton),如在java1.5以前,开发RMI服务时,需要通过rmic生成对应的Stub和Skeleton。其他类似的技术如COM(DCOM)以及CORBA也会生成Stub和Skeleton。   Skeleton的作用是将用户的RPC请求转发给对应的远程对象调用。 Client   ---<call>--->  Stub   ---<req>--->   Skel   ---<dispatch>---->    ----&l ...
Ribbon是微服务的一个核心基础组件,提供多协议HTTP、TCP以及UDP的服务调用RPC功能以及负载均衡功能。 Ribbon:一个客户端IPC(Inter Process Communication)库,RPC(Remote Procedure Calls)库。支持负载均衡、故障容错、多协议支持:HTTP, TCP, UDP,支持异步(asynchronous)以及reactive模型、Caching 以及batching。   举例某个api应用,运行了两个实例(部署了2台机器),这个应用提供了两个api: 1、/test 2、/test/{version} 这两个api都 ...
encode one to one org.jboss.netty.handler.codec.oneone.OneToOneEncoder com.alibaba.dubbo.remoting.transport.netty.NettyCodecAdapter.InternalEncoder org.jboss.netty.handler.codec.base64.Base64Encoder org.jboss.netty.handler.codec.marshalling.CompatibleMarshallingEncoder org.jboss.netty.handler.codec.s ...
以前整理的一点Thrift的资料 Java序列化机制实现:参考https://lobin.iteye.com/blog/629414序列化章节。
<版本号,2字节><无用字段,1字节><消息类型,1字节><方法名长度,4字节><方法名,n字节><序列号,4字节><参数…,n字节> <参数…,n字节>参考struct Field <Field类型,1字节><Field Id,2字节> <Field类型(stop),1字节> 上面的Field Id对应下面例子中”:”前面的数字: struct Order {     1: required i64 orderId;     2: required i64 use ...
分布式服务:中心化的服务注册中心(服务注册及发现) ->弱化 ->去中心化的服务发现
Java RMI是Java提供的远程方法调用,也就是RPC。   Java RMI在Registry上将远程对象存根(可能是静态存根,也可能是动态存根:Java动态代理对象,动态代理方式)和对应的绑定名进行关联,查找的时候根据绑定的名称进行查找。   Java RMI会将远程对象存根(可能是静态存根,也可能是动态存根:Java动态代理对象,动态代理方式)序列化存储在Registry上,在Registry上绑定名关联, 查找的时候根据绑定的名称进行查找,找到后在序列化传给客户端,客户端通过从Registry上获取到的对象存根进行方法调用。   Java RMI的几个核心组件: 1 ...
  public interface Coherence { public String naming(); }   public class DefaultCoherence implements Coherence { public String naming() { return "default coherence protocol"; } }     public class Jobs implements Coherence { public String naming() ...
  public interface CacheLookup { public String naming(); public Object get(); public void add(Object cache); public void remove(Object cache); }   public class DefaultCacheLookup implements CacheLookup { private List<Object> cached; private Object ...
 有关api网关的设计及其服务化的一些想法    
Lamport’s “Time, Clocks and the Ordering of Events in a Distributed System” (1978)  http://www.ics.uci.edu/~cs230/reading/time.pdf     在Lamport’s “Time, Clocks and the Ordering of Events in a Distributed System” (1978) 这篇论文中对分布式系统的定义: 写道 A distributed system is a set of distinct and “sp ...
关于服务注册(registry)以及发现(lookup)
Case: Instant messaging communication  over XMPP base TCP-----------------------------------------------------------------------Ribbon:一个客户端IPC(Inter Process Communication)库,RPC(Remote Procedure Calls)库。支持负载均衡、故障容错、多协议支持:HTTP, TCP, UDP,支持异步(asynchronous)以及reactive模型、Caching 以及batching。   Ribbon和E ...
Java RMI规范 Java序列化机制实现:参考https://lobin.iteye.com/blog/629414 远程方法调用(RMI)章节。  Java 序列化 Java序列化机制实现:参考https://lobin.iteye.com/blog/629414 序列化章节。    Java RMI 实例 新版本java开发rmi服务很方便,不需要通过rmic生成Stub(存根)和Skel(Skeleton),老版本java开发rmi服务还需要生成Stub(存根)和Skel(Skeleton) import java.rmi.Remote; import java.r ...
Global site tag (gtag.js) - Google Analytics