zoukankan      html  css  js  c++  java
  • 第一章 微服务架构实践

    一、微服务架构图:

    二、技术介绍:(技术选型随着代码的编写会完成)

    关于技术选型,我盗了一张我老大的微服务技术栈的图,如下:原文:http://www.jianshu.com/p/2da6becfb019

     我将会用到上图中的如下技术

    • 服务注册和服务发现:consul
    • 服务健康检查:consul
    • 配置管理:consul、archaius
    • 集群容错:hystrix
    • 计数监控:codahale-metrics、java-statsd-client、hystrix-dashboard、turbine、statsd、graphite、grafana
    • 服务路由:ribbon
    • 服务通信:retrofit、AsyncHttpClient(不选择okhttp,是因为okhttp性能比较差)
    • 文档输出:swagger
    • 日志统计:logback+ELK
    • 简化代码:lombok
    • 消息队列:rabbitmq
    • 分布式锁:redis实现和consul实现
    • 本地缓存:guava cache
    • 链路跟踪:zipkin、brave
    • 基本技术:springboot
    • 安全鉴权:auth2、openId connect
    • 自动化构建与部署:gitlab + jenkins + docker + k8s

    三、基本流程:

    1. 各个服务启动的时候,都会将自己的信息注册到consulClient,consulClient将注册信息提交给consulServer,consulServer将信息提交给consulLeader(也是consulServer),consulLeader将自身的数据复制给其他的consulServer,服务注册完成!!!
    2. APP发出一个对gatewayX-server的request,该请求先到nginx,nginx选出一台gatewayX-server的服务器进行request的处理
    3. gatewayX-server通过myserviceA-client.jar来访问myserviceA-server的具体逻辑
      1. 首先从consulServer上拉取可用的myserviceA-server的服务器,服务发现完成!!!
      2. 根据负载均衡策略选出其中一个服务器来进行访问
      3. 访问的过程中通过熔断器来进行超时容错处理
    4. gatewayX-server通过myserviceB-client.jar来访问myserviceB-server的具体逻辑同3

    说明:如果仅仅只是前边这样的流程或者以前边这样的流程为基础并且myserviceB-server要调用myserviceA-server,那么上图中的myserviceB-server中的整个myserviceA-client.jar可以去掉,原因是gatewayX-server已经引入了myserviceA-client.jar。

    如果不是上边的流程,只是单纯的myserviceB-server要访问myserviceA-server,那么需要引入myserviceA-client.jar。

    注意:对于服务发现而言,consulServer会通过gossip协议将服务器数据广播给各个本地consul agent(通常是consulClient),所以我们不需要做本地缓存,当被调用服务的服务器列表发生改变时,会马上广播给consulClient。

    在后续的代码编写过程中,会逐步通过java语言实现一个微服务的整体架构代码。

  • 相关阅读:
    LeetCode 242. Valid Anagram (验证变位词)
    LeetCode 205. Isomorphic Strings (同构字符串)
    LeetCode 204. Count Primes (质数的个数)
    LeetCode 202. Happy Number (快乐数字)
    LeetCode 170. Two Sum III
    LeetCode 136. Single Number (落单的数)
    LeetCode 697. Degree of an Array (数组的度)
    LeetCode 695. Max Area of Island (岛的最大区域)
    Spark中的键值对操作
    各种排序算法总结
  • 原文地址:https://www.cnblogs.com/java-zhao/p/5538232.html
Copyright © 2011-2022 走看看