分布式系统设计新手入门---2,微服务架构中拆分的实践

英文地址:《Beginner's Introduction to Distributed System Design - 2. Practice of Splitting in Microservice Architecture》

引言

在这篇文章中将从分析一个开源项目的可分布性入手,介绍如何使用AP&RP技术。这是一个关于分布式系统设计新手入门的系列文章中的第二篇。您可以点击下面链接找到第一篇文章。

分布式系统设计新手入门---1,微服务的拆分

介绍

在新手入门1中我们简要的介绍了AP&RP技术。为了充分展现这个技术带来的惊人效果,我在github.com上随机挑选了一个项目。这个项目是一个电商的开源项目,名称叫shop,作者为Manphil,项目地址为https://github.com/Manphil/shop。这里要向他及其所有开源作者表示感谢。如果没有他们的工作,我将需要耗费更多的时间来编写本章的实例。首先我要对这个项目做一个整体的技术介绍。这是一个使用JAVA语言开发的电商项目。开发环境为开发环境:IDEA、Tomcat8.5。使用的数据库为MySql。分为前端两个部分,前端使用Bootstrap以及JQuery,后端基于SpringMVC、Spring、MyBatis进行开发,使用Maven构建工程。因为我们只是分析服务端系统的可分布性,限于篇幅将略过项目的构建,调试以及前端的部分。虽然这个实例为JAVA语言,但本篇所介绍的技术同样适用于nodejs,C++,C等语言开发的服务端软件系统。

整体的产品功能及系统架构

Shop并不是一个成熟的开源项目,很多功能处于开发过程中。通过对其分析产生了一些让我也感到惊讶的结论。我会在后面总结这些结论。shop项目主要分为两个大部分,第一部分为系统管理,第二部分为前端调用接口。其全部有11个产品功能组成。如图1所示

Shop系统架构也较为简单,分为后端服务和数据库端。后端服务直接通过MyBatis中间件链接数据库。如图2所示

在shop中有62个可以被调用的接口链接。也就是说整个系统是由62个任务所组成的。相对于比较成熟的电商项目有着上百个接口来说,shop是比较简单的。

分析任务1

先假设shop可以通过MySql集群实现AP操作,那么我们只要对软件系统中的任务读写数据的情况进行分类既RP分析,就可以知道项目shop能否进行分布式操作。这里我们挑选shop中比较复杂的两个任务来介绍具体的分析过程。其中之一是/info/list,这个功能负责返回用户的订单信息。他位于shop/controller/front/CustomerController.java文件中。

其源代码如下:

   

 @RequestMapping("/info/list")

    public String list(HttpServletRequest request,Model orderModel){

        HttpSession session=request.getSession();

        User user;

        user=(User)session.getAttribute("user");



        if (user==null)

        {

            return "redirect:/login";

        }



        OrderExample orderExample=new OrderExample();

       orderExample.or().andUs
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值