开发微服务项目

微服务

将项目分割成一个个小项目,每个项目单独打包部署到自己的服务器,每个服务之间可以相互调用

优点:

  • 每个项目的代码量降低,容易维护

  • 项目的技术更新迭代方便

  • 方便系统的水平扩展

  • 系统的并发量提高

  • 系统的可用性提高

  • 系统的性能提高

缺点:

  • 系统整体的复杂性大大提高

  • 系统开发和部署成本提高

  • 系统运维困难

开发商品微服务和订单微服务

服务提供者:商品服务

服务消费者:订单服务

查询订单时需要查询相关商品的信息

服务之间可以通过RestTemplate进行http调用

商品服务

@RestController
public class ProductController {
​
    @GetMapping("/product/{id}")
    public ResponseEntity<Product> getProductById(@PathVariable Long id){
        Product product = new Product(id,"测试商品",new BigDecimal("99.99999"));
        return ResponseEntity.ok(product);
    }
}

订单服务

/**
 * 配置RestTemplate
 */
@Configuration
public class RestTemplateConfig {
​
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}
@Service
public class OrderService {
​
    @Autowired
    private RestTemplate restTemplate;
    
    public Order getOrderById(Long id){
        Order order = new Order(id,88L,10L, LocalDateTime.now(),null);
        //调用商品服务查询商品
        ResponseEntity<Product> entity = 
                restTemplate.getForEntity("http://localhost:8001/product/" + order.getProductId(), Product.class);
        order.setProduct(entity.getBody());
        return order;
    }
}
@RestController
public class OrderController {
​
    @Autowired
    private OrderService orderService;
​
    @GetMapping("/order/{id}")
    public ResponseEntity<Order> getOrderById(@PathVariable Long id){
        return ResponseEntity.ok(orderService.getOrderById(id));
    }
}

运行效果:

在网页输入url。可得这样的效果:

(id,"测试商品",new BigDecimal("99.99999"));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值