微服务作为当前的流行架构设计,Spring Cloud通过与Spring的集成使微服务的应用更为简便。在Spring Cloud中集成了Netflix的多个开源组件,再通过Spring Boot的注解调用实现插件式的功能调用。
初步架构设计图
1、注册中心-Eureka
提供服务的动态注册、发现
启用Eureka,在pom中添加
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency>
服务主类中添加@EnableEurekaServer注解即可
指定端口 server.port=8761
访问服务:
在此能看观察到该注册中心的所有已注册服务
2、Rest服务-Spring Boot
Rest服务是普通的Spring Boot构建的web应用,通过@RestController注解发布
在配置文件中指定注册中心
eureka: client: service-url: defaultZone: http://localhost:8761/eureka/
服务主类中通过@EnableDiscoveryClient注解在Eureka中注册服务
DiscoveryClient_BIZ-SERVICE/192.168.133.1:biz-service:8888: registering service... DiscoveryClient_BIZ-SERVICE/192.168.133.1:biz-service:8888 - registration status: 204
3、Api网关-Zuul
url的重写:在微服务的实现中通常服务端不会直接暴露于外部调用中,只表现为一些私有服务
服务过滤:选择服务可为客户端调用
授权:限制资源的访问
Zuul是Netflix的网关实现,Zuul使用Eureka做服务发现,使用Ribbon做负载均衡,在pom中引入依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zuul</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency>
在主类中指定@EnableZuulProxy @EnableDiscoveryClient
配置文件设置
zuul: routes: biz-service: service-id: biz-service path: /book/** strip-prefix: false #设置为false 重定向是带book,否则则反 eureka: client: service-url: defaultZone: http://localhost:8761/eureka/
4、服务监控-Hystrix
在微服务中需要查看服务的运行状态,可以通过Hystrix实现服务监控
pom中引入依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId> </dependency>
服务主类中引入@EnableHystrixDashboard注解
需要监控的服务项目中(biz-service)引入hystrix
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix</artifactId> </dependency>
指定监控的方法
@HystrixCommand(fallbackMethod = "queryDefaultFallback") public List<?> queryAllBook() { return BizController.bookList; } public List<?> queryDefaultFallback() { //服务失败后的请求 return new ArrayList<>(); }
hystrix只能对一个微服务进行监控,实践中需要监控多个微服务中的方法调用,可以使用turbine组件
pom中的依赖为
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-turbine</artifactId> </dependency>
turbine配置文件中指定监控的项目
turbine: cluster-name-expression: new String('default') app-config: biz-service, customer-service
另外在同一机器上需要指定不同的域名,在此使用biz-service及customer-service作为测试样例
bizi项目中的配置
eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ instance: hostname: peer1
customer项目的配置
eureka: client: service-url: defaultZone: http://localhost:8761/eureka instance: hostname: peer2
访问http://localhost:8555/hystrix
输入监控的url:http://localhost:8555/turbine.stream,访问监控的方法
http://localhost:8888/book/queryAll
http://localhost:8880/customer/queryAll
可以看到监控结果:
项目完整代码地址:https://github.com/hjguang/spring-cloud.git
相关推荐
基于SpringCloud微服务实现的互联网招聘平台源码 基于SpringCloud微服务实现的互联网招聘平台源码 基于SpringCloud微服务实现的互联网招聘平台源码 基于SpringCloud微服务实现的互联网招聘平台源码 基于...
SpringCloud微服务系统设计方案是构建大规模、高可用应用程序的一种现代架构。它基于Spring Boot和Spring Framework,旨在简化微服务的开发、部署和管理。本文将深入探讨微服务的本质、面临的挑战、架构设计以及核心...
本设计基于JavaEE和SpringCloud微服务的图书馆管理系统。利用当前计算机技术的快速发展来构建图书馆管理系统。 图书馆的书籍管理系统可以有效地实现图书馆的管理的标准化,组织化管理,减少了人工管理过程中的缺陷...
### 基于Spring Cloud微服务系统设计方案 #### 微服务本质 微服务架构的核心在于其分布式特性,它强调将大型复杂系统分解为一系列小型、自治的服务组件,这些组件能够独立部署、扩展和维护。相比于传统单体架构,...
# 基于Spring Cloud微服务的外卖订餐系统 ## 项目简介 本项目是一个基于Spring Cloud微服务架构的外卖订餐系统,旨在为用户提供便捷的在线订餐服务,同时为管理员提供高效的后台管理系统。系统分为客户端和后台...
基于SpringCloud微服务的云账单系统源码.zip
FEBS Cloud 是基于 Spring Cloud Hoxton.RELEASE、Spring Cloud OAuth2、Spring Cloud Alibaba 和 Element 构建的微服务权限管理系统。 本系统的架构分为前端和后端两个部分。前端使用 Vue.js 框架,后端使用 ...
毕业设计基于SpringCloud微服务分布式链路追踪系统源码 追踪实现 使用zipkin+sleuth实现 这个是比较成熟的分布式链路追踪实现方案 拦截器自定义实现 基于Google Dapper 论文,进行自定义实现。 原理: traceId :...
本设计源码提供了一个基于Spring Boot和Spring Cloud的微服务架构。项目包含399个文件,主要使用Java、Shell和HTML编程语言。文件类型包括223个Java源代码文件、48个XML配置文件、36个YAML配置文件、35个PNG图片文件...
总结起来,这个压缩包提供了SpringCloud微服务架构的典型应用场景,涵盖了服务治理、监控、容错和安全等多个方面,对于学习和实践SpringCloud的开发者来说是非常有价值的资源。通过深入理解和实践这些组件,开发者...
微服务毕业论文管理系统体现出MIS的一个总体设计思想,实现基于SSM框架,综合地应用了 MySQL、Java等技术,最大程度上满足学生对自己所需资料的相关操作及管理员对毕业论文进行管理功能,极大地提升相关工作效率。...
在实际的作业中,你可能需要设计并实现一个基于SpringCloud的微服务架构,包括创建服务实例、设置服务发现、实现客户端负载均衡、搭建配置中心以及处理服务间的通信。参考答案会提供一种可能的解决方案,帮助你理解...
深入理解SpringCloud微服务架构,需要阅读官方文档,以及各种实战教程,例如“SpringCloud实战”等书籍,同时参加在线课程和社区讨论,如Stack Overflow、GitHub等,可以提高学习效率。 总之,SpringCloud微服务...
spring cloud 微服务helloworld项目,适合新手,项目基于spring cloud 微服务技术,使用了eureka注册公司,configserver配置中心,项目需要在本地新建配置中心配置文件
基于Spring Cloud,Dubbo,Thrift微服务框架整合开发的IM社交系统(用Netty即时通讯技术+Tensorflow框架+Haar+Adaboost人脸识别技术).zip基于Spring Cloud,Dubbo,Thrift微服务框架整合开发的IM社交系统(用Netty...
采用了基于SpringCloud,微服务技术架构以及各种中间件来实现车辆管理系统,主要完成了车辆信息管理,驾驶员管理,车辆运维管理,角色管理,部门管理,系统管理,系统监控等模块,实现了更好的车辆状态的相关管理,让...
本文来自程序猿,本文主要介绍了SpringCloud微服务下服务接口调试及管理,什么样方式可以让微服务的接口管理变得更加容易些,希望对您的学习有所帮助。我们知道在微服务架构下,软件系统会被拆分成很多个独立运行的...