zoukankan      html  css  js  c++  java
  • spring boot 集成 zookeeper 搭建微服务架构

    PRC原理

      RPC 远程过程调用(Remote Procedure Call)

      一般用来实现部署在不同机器上的系统之间的方法调用,使得程序能够像访问本地系统资源一样,通过网络传输去访问远程系统资源,RPC框架实现的原理都是类似的,如下图:

      Client Code:客户端调用方代码实现,负责发起RPC调用,为调用方用户提供使用API。

      Serialization/Deserialization:负责对RPC调用通过网络传输的内容进行序列化与反序列化,不同的RPC框架有不同的实现机制,主要分为文本与二进制两大类。(文本序列化机制主要有XML与JSON两种格式,二进制类别的序列化机制常见的有Java原生的序列化机制,以及Hessian、protobuf、Thrift、Avro、Kryo、MessagePack等),不同的序列化方式在可读性,码流大小,支持的数据类型以及性能等方面都存在较大差异,需要根据实际情况进行筛选。

      Stub Proxy:可以看做是一种代理对象,屏蔽RPC调用过程中复杂的网络处理逻辑,使得RPC调用透明化,能够保持与本地调用一样的代码风格。

      Transport:作为RPC框架底层的通信传输模块,一般通过Socket在客户端与服务端之间传递请求与应答消息。

      Server Code:服务端服务业务逻辑具体的实现。

    服务注册中心介绍

    我和你都有表达的能力,但是我们怎么沟通呢?见面聊?电话谈?还是微信语音呢?

    显然,注册中心来解决这个问题:

    ZooKeeper介绍

      zookeeper是dubbo中的注册中心,dubbo是一个分布式服务框架,自带RPC,dubbo使用maven引入。

      要运行dubbo,首先需要一个注册中心,可供选择的注册中心有Zookeeper、Multicast、Redis、Simple。

    下载从官网去下载

    解压后进入conf目录,里面有一个zoo.cfg (如果没有就自己创建)  配置说明如下:

      tickTime=2000  #单位毫秒 zk中最小时间单位长度

      dataDir=/user/local/zookeeper/data  #zk服务器存储快照文件目录

      dataLogDir=/user/local/zookeeper/logs  #zk服务器存储事务日志文件目录

      clientPort=2181  #服务端对外的服务端口

      initLimit=5  #tickTime的倍数  Leader等待Follower启动并完成数据同步的时间

      syncLimit=2  #tickTime的倍数  Leader与Follower之间心跳最大延时时间

    进入bin目录下 运行 sh zkServer.sh start  (Windows直接双击)

    spring boot 集成 zookeeper

    稍微介绍一下设计

    一共有3个模块:

    web:服务消费者,包含入口层与业务逻辑层。  (war包)

    service.user:服务提供者,用户服务层  (war包)

    base.core:共用层  包含对象实体  interface  (jar包)

    多的我就不说了,都在代码里

    源码分享

    Fork me on Gitee

  • 相关阅读:
    短视频不为人知的素材来源 以及平台推荐的黑盒机制
    说什么月入几万 我是不是应该一头撞死?
    Python 3 进阶 —— 使用 PyMySQL 操作 MySQL
    CentOS安装Subversion 1.9.*版本客户端
    [算法]PHP随机合并数组并保持原排序
    CentOS安装Memcached
    Git Windows客户端保存用户名和密码
    ApiGen 4.0配置项
    ApiGen安装
    SQL服务器模式
  • 原文地址:https://www.cnblogs.com/fengyumeng/p/9874565.html
Copyright © 2011-2022 走看看