c# 微服务学习_学习笔记33-微服务架构的设计

微服务架构6种常用的设计模式

1、代理设计模式

c# 微服务学习_学习笔记33-微服务架构的设计_第1张图片

2、聚合设计模式

c# 微服务学习_学习笔记33-微服务架构的设计_第2张图片

3、链条设计模式

c# 微服务学习_学习笔记33-微服务架构的设计_第3张图片

4、聚合链条设计模式

c# 微服务学习_学习笔记33-微服务架构的设计_第4张图片

5、数据共享设计模式

c# 微服务学习_学习笔记33-微服务架构的设计_第5张图片

6、异步消息设计模式

c# 微服务学习_学习笔记33-微服务架构的设计_第6张图片

案例

需求:

c# 微服务学习_学习笔记33-微服务架构的设计_第7张图片

数据库设计:略

mybatis逆向工程生成pojo实体类和mapper接口以及mapper映射文件。

先创建User服务,新建User-Service项目和User-Provider项目,添加依赖

User-Service:

c# 微服务学习_学习笔记33-微服务架构的设计_第8张图片

User-Provider:除了springcloud的依赖和springboot的web启动器之外还需要一下一些

c# 微服务学习_学习笔记33-微服务架构的设计_第9张图片

User-Service:将逆向工程生成的pojo实体类放入pojo包中,编写接口

c# 微服务学习_学习笔记33-微服务架构的设计_第10张图片

c# 微服务学习_学习笔记33-微服务架构的设计_第11张图片

User-Provider:

配置文件:

c# 微服务学习_学习笔记33-微服务架构的设计_第12张图片

将mapper映射文件放到classpath下

c# 微服务学习_学习笔记33-微服务架构的设计_第13张图片

c# 微服务学习_学习笔记33-微服务架构的设计_第14张图片

新建一个ServiceImpl,但是不实现UserService的接口,而是使用mapper对数据库进行操作,然后新建controller,在这里面新建类,实现UserService接口,重写其中的方法,调用ServiceImpl中的方法,完成对User-Service的调用和对数据库的操作

启动类:

c# 微服务学习_学习笔记33-微服务架构的设计_第15张图片

ServiceImpl:

c# 微服务学习_学习笔记33-微服务架构的设计_第16张图片

Controller:

c# 微服务学习_学习笔记33-微服务架构的设计_第17张图片

其他Product、Order、Trade的操作和这个基本一样,只是业务逻辑稍微有些改变。

创建consumer:添加springcloud和feign,eureka,以及这几个服务的依赖等

c# 微服务学习_学习笔记33-微服务架构的设计_第18张图片

启动类:

c# 微服务学习_学习笔记33-微服务架构的设计_第19张图片

配置文件

c# 微服务学习_学习笔记33-微服务架构的设计_第20张图片

调用这几个服务的接口

c# 微服务学习_学习笔记33-微服务架构的设计_第21张图片

在controller中编写业务逻辑

package com.ebook.controller;


import java.util.List;
import java.util.UUID;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.ebook.order.pojo.Orders;
import com.ebook.product.service.pojo.Product;
import com.ebook.service.ConsumerOrderService;
import com.ebook.service.ConsumerProductService;
import com.ebook.service.ConsumerTradeService;
import com.ebook.service.ConsumerUserService;
import com.ebook.user.pojo.User;

@RestController
public class ConsumerController {

	@Autowired
	private ConsumerOrderService orderService;
	@Autowired
	private ConsumerProductService productService;
	@Autowired
	private ConsumerTradeService tradeService;
	@Autowired
	private ConsumerUserService userService;
	
	@RequestMapping(value="/create",method=RequestMethod.GET)
	public User create(){
		Integer result = login();
		System.out.println(result);
		User user = new User();
		user.setUserName("结果请看控制台");
		List productList = productService.findAll();
		for (Product product : productList) {
			System.out.println(product.getName());
		}
		
		List orderList = orderService.findAll();
		Orders order = orderList.get(0);
		order.setId(777);
		Orders addOrder = orderService.addOrder(order);
		System.out.println("添加后的orderID:"+addOrder.getId());
		return user;
	}
	
	public Integer login() {
		String userName = "admin";
		String password = "admin";
		User user = userService.login(userName, password);
		if(user!=null) {
			System.out.println("登录成功");
			return user.getId();
		}
		System.out.println("登录失败");
		return -1;
	}
}

链式调用,即使用consumer调用trade服务,在trade服务中调用order服务,在provider中调用provider和在consumer服务中调用provider服务步骤是一样的。

pojo实体类要实现序列化接口。

你可能感兴趣的:(c#,微服务学习)