本文源码:GitHub·点这里 || GitEE·点这里

更新进度(共6节):

01:项目技术选型简介,架构图解说明
02:业务架构设计,系统分层管理
03:数据库选型,业务数据设计规划
04:中间件集成,公共服务管理
05:SpringCloud 基础组件应用设计

一、组件应用规划

1、注册中心

Eureka 组件是 Netflix 开发的,用于定位服务,基于RESTFul方式实现服务注册与发现。包括一个EurekaServer服务端(通常是指微服务中的注册中心) 和EurekaClient客户端(通常指微服务中的业务服务)。Eureka支持高可用的配置,当注册中心发现有故障的服务时,Eureka就会转入自动保护模式,故障时不影响服务的发现和注册,当故障恢复正常时,注册中心的服务会进行状态同步,继续提供服务。

2、服务调用

Feign 组件是一个声明式的 WebService客户端。在Eureka注册的服务中,可以使用Feign接口的形式来进行相关服务间的请求调用,并提供超时回退,快速熔断的相关特性。Feign是一个便利的RestFul框架,简化调用,通过ribbon在注册服务器中找到服务实例,然后对请求进行服务分配,实现了负载均衡的效果,默认采用轮询算法。

3、服务网关

GateWay网关,可以让所有客户端请求先通过微服务网关,跟网关进行交互,由网关进行各个微服务的请求转发,客户端(前端)对多服务架构无感知。降低客户端与微服务之间的交互耦合度;便于监控,可在网关中监控数据;在网关层统一处理认证,规划切面编程;也就是说与业务本身功能无关的公共逻辑可以在网关层统一封装实现,类似设计模式中的门面模式。

二、注册中心

1、服务端配置

eureka:server:enable-self-preservation: falseeviction-interval-timer-in-ms: 15000instance:prefer-ip-address: trueclient:register-with-eureka: falsefetch-registry: falseservice-url:defaultZone: http://127.0.0.1:5001/eureka/

2、客户端配置

eureka:instance:prefer-ip-address: trueclient:service-url:defaultZone: http://127.0.0.1:5001/eureka/

三、Feign组件

1、Feign接口

@FeignClient("MOPSZ-SOFT-ROCKET")
public interface UserSearchFeign {@GetMapping("/mq/user/search/sendBookSearch")void sendBookSearch (@RequestParam("msgContent") String msgContent) ;
}

2、Feign接口实现

@RestController
public class UserSearchController implements UserSearchFeign {@Overridepublic void sendBookSearch(String msgContent) {}
}

3、接口配置

该配置文件在实现Feign接口的项目中配置就好,也可针对特定方法配置。

feign:hystrix:enabled: trueclient:config:feignName:connectTimeout: 60000readTimeout: 60000

4、Feign接口调用

@Resource
private UserSearchFeign userSearchFeign ;
userSearchFeign.sendBookSearch("");

四、服务网关

1、网关组件配置

zuul:# 前缀,可以用来做版本控制prefix: /v1# 禁用默认路由,执行配置的路由ignored-services: "*"routes:# 配置 Token 服务pro6601:serviceId: mopsz-basis-tokenpath: /api/6601/**# 配置 UserClient 服务pro6102:serviceId: mopsz-user-clientpath: /api/6102/**
  • 配置FilterConfig进行用户Token认证拦截;
  • 配置FallBackConfig进行服务降级响应管理;

2、项目部署

在项目上线后,对外暴露一个网关服务端口,其他服务端口不对外暴露,所有的请求都必须通过网关拦截或者转发,这就是微服务提供服务的一种常见方式。

五、源代码地址

GitHub·地址
https://github.com/cicadasmile/husky-spring-cloud
GitEE·地址
https://gitee.com/cicadasmile/husky-spring-cloud

微服务架构案例(05):SpringCloud 基础组件应用设计相关推荐

  1. 微服务架构案例(06):通过业务、应用、技术、存储方面,聊聊架构

    更新进度(共6节): 源码地址:GitHub·点这里 || GitEE·点这里 章节 文章标题 01 项目技术选型简介,架构图解说明 02 业务架构设计,系统分层管理 03 数据库选型,业务数据设计规 ...

  2. 微服务架构案例(01):项目技术选型简介,架构图解说明

    本文源码:GitHub·点这里 || GitEE·点这里 一.单体架构 单体架构在中等偏小的业务中比较常见,场景模式就是单个应用.单个数据库.一个程序包(例如war格式或者Jar格式)包含所有业务需求 ...

  3. 【DDD/CQRS/微服务架构案例】在Ubuntu 14.04.4 LTS中运行WeText项目的服务端

    在<WeText项目:一个基于.NET实现的DDD.CQRS与微服务架构的演示案例>文章中,我介绍了自己用Visual Studio 2015(C# 6.0 with .NET Frame ...

  4. 微服务架构案例(03):数据库选型简介,业务数据规划设计

    本文源码:GitHub·点这里 || GitEE·点这里 更新进度(共6节): 01:项目技术选型简介,架构图解说明 02:业务架构设计,系统分层管理 03:数据库选型,业务数据设计规划 一.数据库选 ...

  5. 微服务架构案例(02):业务架构设计,系统分层管理

    本文源码:GitHub·点这里 || GitEE·点这里 更新进度(共6节): 01:项目技术选型简介,架构图解说明 02:业务架构设计,系统分层管理 一.业务架构设计 1.基础概念 服务的架构设计决 ...

  6. python 微服务架构实战_名师讲坛——Java微服务架构实战(SpringBoot+SpringCloud+Docker+RabbitMQ)...

    内容简介 作者简介 前言 第一部分 SpringBoot篇 第1章 SpringBoot编程起步 1.1 传统开发中痛的领悟 1.2 SpringBoot简介 1.3 SpringBoot编程起步 1 ...

  7. 微服务开源框架TARS 之 基础组件

    作者 herman 导语 本文源自herman的系列文章之一<鹅厂开源框架TARS之基础组件>.相关代码已按TARS开源社区最新版本更新. TARS开源框架库里面用C++实现了比较多的公用 ...

  8. 设计微服务架构需要掌握的基础知识

    基础知识: 领域驱动设计(DDD) Restful API设计以及深入理解HTTP协议 Restful API设计框架(JAX-RS(CXF,Jersey,RestEasy) . Spring MVC ...

  9. 微服务架构案例(04):中间件集成,公共服务封装

    本文源码:GitHub·点这里 || GitEE·点这里 更新进度(共6节): 01:项目技术选型简介,架构图解说明 02:业务架构设计,系统分层管理 03:数据库选型,业务数据设计规划 04:中间件 ...

最新文章

  1. AI突破的「阴暗面」:怎样防止GPT-3跟人类学坏?
  2. 【Unity】publishing setting keystore作用
  3. 9周的项目实训从今天就开始了,
  4. JVMTI标记如何影响GC暂停
  5. Android开源工具项目集合
  6. Ajax 实现在WebForm中拖动控件并即时在服务端保存状态数据 (Asp.net 2.0)(示例代码下载)...
  7. C语言 传值和传指针的区别
  8. 程序员又双叕和产品打起来了,说说与产品经理的那些事。
  9. 2019必学的10大顶级Python库!
  10. Spring父子上下文(WebApplicationContext)(防止事务失效)
  11. 唯品会关键词搜索API接口(item_search-按关键字搜索唯品会商品API接口),唯品会API接口
  12. lomboz eclipse怎么连接oracle10,lomboz eclipse 3.3的安装和连接oracle 11g(图解详细教程)...
  13. 【财务篇】如何群发工资条?
  14. [USACO 2008 MAR] 土地购买
  15. 大数据毕设选题 - 深度学习植物识别系统(cnn opencv python)
  16. 用JavaScript实现,用户输入自己的汽油编号,然后输入自己加多少升,就弹出价格
  17. unity沙子堆积_Unity Shader 之 简单实现沙漠干旱热浪的效果
  18. pip 和 conda 什么区别?
  19. Unity:排序图层
  20. 数据结构 c语言 严蔚敏 第十章 答案 10.1,严蔚敏版数据结构(C语言版)参考答案第十章..doc...

热门文章

  1. JS学习笔记2-JavaScript 语法
  2. HelloWorld讲解
  3. LeetCode篇之链表:83(去重问题)
  4. windows route netstat arp命令
  5. 人工神经网络与生物神经网络
  6. Python 卸载python
  7. Java 线程实例二(终止线程、生产者/消费者问题、获取线程状态、获取所有线程、查看线程优先级、中断线程)
  8. curl命令使用介绍
  9. vue-router 传递参数的几种方式
  10. 一本通1596动物园