JAVA抢购业务学习--架构设计

半城伤御伤魂 提交于 2020-01-11 03:21:21

难点:

  1. 高并发—超出最大服务数【分布式、Redis缓存、 集群、分布式锁】
  2. 单用户多次操作—抢购狂点,如何达到仅处理一次【消息的幂等性】
  3. 保证抢购的顺序【消息队列排队】

业务架构:描述系统可以做什么的架构

  1. 微信登录、用户名密码登录
  2. 抢购
  3. 微信支付、支付宝支付

应用架构:描述系统业务应用分类的架构

  1. 用户业务
  2. 商品业务
  3. 订单业务
  4. 支付业务

技术架构:描述系统技术实现的架构

  1. 前后端分离
  2. Dobbo协议 DobboX框架
  3. Nginx集群—>API
  4. Consumer—->对外提供接口。api service
  5. Zookeeper Registration —注册中心
  6. Provider层:包括DAO层(springboot)
  7. 数据仓库:MySQL,MQ,Redis

部署架构:描述系统如何进行部署的架构

    Docker:一台服务器可以模拟出很多模拟服务器,模拟集群环境

   优点:比虚拟机效率高,可以直接部署到真正的集群系统

  1. 消费者(用户消费者、商品、订单、支付消费者)
  2. 生产者(用户、商品、订单、支付生产者)
  3. 基础服务,每个单独部署一台服务器
    Ngnix-负载均衡、
    MySql、
    Redis-缓存、
    Zookeeper-、分布式服务架构-文件系统+监听通知机制
    Dubbo、分布式服务框架、高性能和透明化的RPC远程服务调用方案、SOA服务治理方案
    ActiveMQ、消息中间件、kafka、rabitmq
    nexus、构建Maven私服
    Jeakins、部署发布

微服务架构

拆封服务为

provider consumer

微服务之间通信方式

  1. RPC:remote procedure call 远程过程调用,像调用本地服务一样
  2. REST:Representational State Transfer,一组架构约束条件和原则,狭义:参数封装到url上

分布式 部署到不同的服务器上

集群 服务器一个组,做相同的事,

 

常用框架

  1. Dubbo—RPC
  2. Dubbox—-Dubbo的升级,支持REST
  3. SpringCloud,支持RPC+REST

微服务设计原则

  1. 围绕业务切分
  2. 单一职责
  3. 谁创建谁负责

选择部署策略

  1. Docker虚拟化部署

Docker

  1. Container
  2. Image
  3. Docker Registry

运行

  1. Client:执行命令docker build. docker pull. docker run
  2. HOST:docker daemon 命令处理,本地有则直接执行,没有去远端
  3. Registry:远程镜像中心

网络配置

  1. Host模式—使用宿主机的ip port—不安全
  2. Container模式—与已经存在的容器共享配置
  3. None模式—不进行配置,无网络通信
  4. Bridge模式,默认模式。分配一个递增ip,默认按照启动服务顺序递增。设置固定ip,规划ip,预留ip
  5. 配置方式 —net=(具体模式名称)

端口映射

-p

安装

官网下载安装docker.dmg

操作

  1. 查看镜像 docker images
  2. 搜索镜像 docker search
  3. 镜像拉取 docker pull
  4. 镜像删除 docker rmi

容器操作

docker run -d -p 8888:8080 —name tomcat-test tomcat

docker stop

docker start

docker rm

docker cp

docker ps

docker ps -a

docker ps -a|grep

 

动态IP

固定IP

1、创建网络,制定网段

docker network create --subnet=172.10.0.0/16 mynet

2、创建容器,指定ip

docker run -d -it --net mynet --ip 172.10.0.8 --name tomcat4 tomcat

 

Dockerfile

内置命令

  1. FROM:依赖的底层镜像
  2. MAINTAINER:指定镜像创建者
  3. ENV:设置环境变量
  4. RUN:运行shell命令
  5. COPY:将编译机本地文件拷贝到镜像

文件名称必须为Dockerfile

执行命令生成镜像

docker build

 

图像化工具

  1. DockerUI
  2. Shipyard

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!