项目作者: huangll99

项目描述 :
spring-cloud-alibaba study
高级语言: Java
项目地址: git://github.com/huangll99/spring-cloud-alibaba-study.git
创建时间: 2018-11-12T07:19:26Z
项目社区:https://github.com/huangll99/spring-cloud-alibaba-study

开源协议:

下载


spring-cloud-alibaba是spring-cloud规范的另一种实现,提供了注册服务与配置服务二合一的Nacos,提供熔断降级与系统保护的Sentinel.

系统整体架构:

avatar

Nacos部署

Spring-Cloud-Gateway搭建配置与部署

依赖包:

  1. <dependencyManagement>
  2. <dependencies>
  3. <dependency>
  4. <groupId>org.springframework.cloud</groupId>
  5. <artifactId>spring-cloud-dependencies</artifactId>
  6. <version>Finchley.SR2</version>
  7. <type>pom</type>
  8. <scope>import</scope>
  9. </dependency>
  10. </dependencies>
  11. </dependencyManagement>
  12. <dependencies>
  13. <dependency>
  14. <groupId>org.springframework.cloud</groupId>
  15. <artifactId>spring-cloud-starter-gateway</artifactId>
  16. </dependency>
  17. </dependencies>

服务与调用服务示例工程

  • 服务注册

添加依赖:

  1. <dependency>
  2. <groupId>org.springframework.cloud</groupId>
  3. <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  4. <version>0.2.0.RELEASE</version>
  5. </dependency>

配置地址(bootstrap.properties):
spring.cloud.nacos.discovery.server-addr=10.3.10.131:8848
开启配置:

  1. @EnableDiscoveryClient
  2. @SpringBootApplication
  3. public class BookApplication {
  4. public static void main(String[] args) {
  5. SpringApplication.run(BookApplication.class, args);
  6. }
  7. }
  • 调用服务:
    添加依赖:
    1. <dependency>
    2. <groupId>org.springframework.cloud</groupId>
    3. <artifactId>spring-cloud-starter-openfeign</artifactId>
    4. </dependency>
    编写feign接口:
    1. @FeignClient("book-serv")
    2. public interface BookService {
    3. @GetMapping("/book/{bookName}")
    4. Result<Book> book(@PathVariable(name = "bookName") String bookName);
    5. }
    调用:
    1. @Autowired
    2. private BookService bookService;
    3. @PostMapping("/order")
    4. public Result order(@RequestBody Order order) {
    5. Result<Book> result = bookService.book(order.getBookName());
    6. Book book = result.getData();
    7. System.out.println(book);
    8. double money = order.getCount() * book.getPrice();
    9. order.setTotalMoney(money);
    10. System.out.println(order);
    11. return Result.builder().success(true).msg("ok").build();
    12. }
  • 动态配置
    添加依赖:
    1. <dependency>
    2. <groupId>org.springframework.cloud</groupId>
    3. <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    4. <version>0.2.0.RELEASE</version>
    5. </dependency>

配置地址(bootstrap.properties):
spring.cloud.nacos.config.server-addr=10.3.10.131:8848

注入配置:

  1. @RefreshScope //用来刷新配置
  2. @RestController
  3. public class BookController {
  4. @Value("${price}") //注入配置
  5. private Double price;
  6. @PostMapping("/bookAdd")
  7. public Result bookAdd(@RequestBody Book book) {
  8. System.out.println(book.toString());
  9. return Result.builder().success(true).msg("ok").build();
  10. }
  11. @GetMapping("/book/{bookName}")
  12. public Result<Book> book(@PathVariable(name = "bookName") String bookName) {
  13. Book book = Book.builder().bookName(bookName).author("海明威").price(price).build();
  14. return Result.<Book>builder().success(true).msg("ok").data(book).build();
  15. }
  16. }

注意:需要在nacos控制台添加配置,dataid=${spring.application.name}.properties

  • 服务保护
    添加依赖:
    1. <dependency>
    2. <groupId>org.springframework.cloud</groupId>
    3. <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
    4. </dependency>
    配置dashboard地址:
    spring.cloud.sentinel.transport.dashboard=localhost:8080