Spring Cloud 架构,例子

Genesis. Is a Spring Cloud Project

Genesis 中文意思: 起源, 哈哈哈哈......

技术架构

genesis 是一个基于Spring cloud(Camden.RELEASE) Spring Boot(1.4.1.RELEASE) Mybatis(3.3.0) 通用Mapper 通用分页Pagehelper完成的一个基础组件架构,后面会持续更新...

MAVEN模块说明

1. 基础组件说明

项目名称端口描述URL
genesis-common公共模块(工具类,资源......)
genesis-core核心代码
genesis-model公共实体对象 

2. Spring Cloud(genesis-server)组件说明

项目名称端口描述URL
genesis-server-discovery8761服务注册中心
genesis-server-discovery28762服务注册中心2(用作和8761实现高可用注册中心)
genesis-server-config8040服务配置中心服务
genesis-server-config-client8041服务配置客户端测试
genesis-server-gateway8050服务网关
genesis-server-monitor8030服务监控(hystrix-dashboard)

3. Spring(genessis-spring)扩展组件说明

项目名称端口描述URL
genesis-spring-extendsSpring 扩展(更新中...)
genesis-spring-pluginsSpring 插件(更新中...)

4. Demo 提供组件使用说明

项目名称端口描述URL
genesis-demo8080API接口
genesis-demo-goods-service8081Goods服务提供者
genesis-demo-goods-service28083Goods服务提供者(用于启动测试 API goods模块Feign Client负载均衡)
genesis-demo-order-service8082Order服务提供者

架构图(目前待完善)

后续会更新架构图出去,暂时先这样看着... 焦灼中..........

服务中心HA说明

项目名称端口描述URL
genesis-server-discovery8761服务注册中心
genesis-server-discovery28762服务注册中心2(用作和8761实现高可用注册中心)
  • 1,(C:\Windows\System32\drivers\etc\hosts文件)
127.0.0.1 discovery1
127.0.0.1 discovery2
  • 2,每个配置里面都有一个application.properties,本机为了方便在idea工具启动 所以使用了两个项目

  • 3,以后线上可以使用一个工程即可 如下:

application-discovery1.properties

spring.application.name=eureka-server-clustered
server.port=8761
eureka.instance.hostname=discovery1
eureka.client.serviceUrl.defaultZone=http://discovery2:8762/eureka/

application-discovery2.properties

spring.application.name=eureka-server-clustered
server.port=8762
eureka.instance.hostname=discovery2
eureka.client.serviceUrl.defaultZone=http://discovery1:8761/eureka/

命令启动格式1:

java -jar discovery1-1.0.0.jar  --spring.profiles.active=discovery1
java -jar discovery2-1.0.0.jar --spring.profiles.active=discovery2

命令启动格式2:

添加文件 application.properties

spring.profiles.active=discovery1
或者
spring.profiles.active=discovery2

命令修改为:

java -jar discovery1-1.0.0.jar

效果图:

访问discovery1

discovery1

访问discovery2

discovery2

熔断监控视图(目前待完善)

使用说明

1,主机名配置:

主机名配置(C:\Windows\System32\drivers\etc\hosts文件)
127.0.0.1 discovery config-server gateway movie user feign ribbon

2,项目启动:

  • 数据库脚本 genesis-demo resources/db/下面spring-cloud-test.sql
  • 首先启动:genesis-server-discovery 注册中心,访问:ip:8761
  • 启动API genesis-demo 访问http://localhost:8080/swagger-ui.html
  • 分别启动 两个服务提供者
  • 通过API文档Try 就可以了

3, 服务注册展示:

server-demo

API 文档访问

  • 启动API genesis-demo 访问http://localhost:8080/swagger-ui.html api-demo

分布式事务测试(暂时没开发,后续更新...)

 

[代码git地址:]https://github.com/sungang1120/genesis

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Cloud 是一个基于 Spring Boot 的云计算应用开发工具集,它提供了一系列开箱即用的服务,帮助开发者快速构建分布式系统和微服务架构。其中一个著名的组件是 Spring Cloud Netflix,包含了 Eureka(服务注册与发现)、Hystrix(容错管理)和 Ribbon(客户端负载均衡)等。 以简单的例子说明,假设你正在构建一个电商应用,它由多个微服务组成,如订单服务、商品服务和用户服务。你可以使用 Spring Cloud: - **Eureka**:当你启动一个新的服务实例时,会自动向Eureka注册,其他服务可以通过Eureka找到并调用它,无需硬编码地址。 - **Ribbon**:客户端(例如,订单服务)使用Ribbon作为客户端负载均衡器,自动从Eureka获取商品服务列表,并根据策略选择一个服务实例发送请求。 - **Feign**:如果服务之间需要API调用,Feign可以用来轻松地生成REST客户端,使得接口声明式调用变得简单。 一个简单的例子代码片段(Java): ```java @RestController @EnableFeignClients public class OrderController { @Autowired private OrderService orderService; @GetMapping("/place-order") public ResponseEntity<String> placeOrder(@RequestParam String productId) { Product product = orderService.getProduct(productId); // 这里Feign会自动处理远程调用 return ResponseEntity.ok("Order placed for " + product.getName()); } } // Service Discovery示例 @Component @EnableEurekaClient public class AppConfig { @Value("${eureka.client.serviceUrl.defaultZone}") private String eurekaServer; @Bean public RestTemplate restTemplate() { return new RestTemplate(); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值