转载

[Java技能树] 软件架构(SOA+微服务)

  • SOA

    • 概念: 是一种粗粒度、松耦合服务架构,各服务间均需要基于ESB(Enterprise Service Bus,企业服务总线)进行消息通信
  • 微服务

    • 概念: 它是SOA的细粒度体现。将单体架构系统按照业务进行垂直切分成独立的服务,并独立部署、运行; 各服务间通常是基于RESTful API(同步)和消息队列(MQ,异步)进行通信。
    • 框架工具

      • Spring Boot, Spring Cloud
      • Docker 容器

        • 主要解决的问题: 1、通过镜像的方式将应用和运行环境一起打包部署,能做到开发、测试、线上环境保持一致2、作为一种新的虚拟化技术,降低了传统虚拟化技术带来的成本
        • Docker的安装: yum -y install docker
        • 相关概念:

          - 镜像: 镜像是一个只读的文件系统,包括应用文件、环境文件。它通常包含堆叠在彼此之上的联合分层文件系统。 一个Docker容器中往往有多个不同的镜像。镜像没有状态并且始终不会发生更改。
          - 自定义镜像, 及其两种方式
              - 通过Dockerfile文件快速创建镜像, 编写Dockerfile文件,然后执行docker build命令创建镜像
              - 使用docker commit 命令从容器创建一个新的镜像 
          - 仓库
              - 本地镜像仓库
              - 远程镜像仓库
          - 容器
              - Docker 容器是Docker镜像的运行时实例。Docker 容器中包含Docker 镜像执行环境一组标准指令此概念借用自船运集装箱,它们定义了在全球运送货物的标准。Docker 定义了交付软件的标准。
        • 常用命令:

          - 登录Docker 镜像仓库: docker login [OPTIONS] [SERVER]
          - 搜索远程仓库镜像,如docker search centos表示搜索与centos相关的镜像: docker search [OPTIONS] TERM 
          - 从远程仓库拉取镜像到本地,默认tag(版本号)是latest: docker pull [OPTIONS] NAME[:TAG|@DIGEST]
              - OPTIONS: -a :拉取所有 tagged 镜像
              - 如:docker pull centos表示拉取最新的centos镜像到本地
          - docker rmi [OPTIONS] 镜像ID/仓库名:镜像名
              - 删除本地仓库中的镜像
              - OPTIONS: -f:强制删除
          - docker run [OPTIONS] [镜像ID/仓库名:镜像名] 
              - 包含两步操作: 1、将镜像放到容器中2、启动容器,相当于docker start
              - OPTIONS: 1)-i:以交互模式运行,通常与 -t 一起使用简写为-it2)-d:以后台程序运行,并返回容器ID3)-p:指定端口映射,宿主机端口:容器端口4)--name:为容器指定一个名称
              - docker run -it 镜像ID/仓库名:镜像名 /bin/bash可以进入docker容器中的命令行模式 exit 或 Ctrl+D 命令退出并销毁当前docker容器Ctrl+P,Ctrl+Q也可退出,且不会销毁docker容器
              - 端口映射
                  - 命令格式: docker run -p 宿主机端口:容器端口docker run -P
                  - -p:指定映射端口 -P:随机映射端口
                      - 1)使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口; 2)-p则可以指定要映射的IP和端口,但是在一个指定端口上只可以绑定一个容器。支持的格式有 hostPort:containerPort、ip:hostPort:containerPort、 ip::containerPort。
                      - 如:docker run -p 80:80 --name mynginx -p 80:80:将容器的80端口映射到主机的80端口 --name mynginx:将容器命名为mynginx
              - 如创建并启动mysql容器: docker run --name mysql -p 3306:3306 -v /var/lib/mysql/:/var/lib/mysql/ -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.7其中 --name 指定容器以mysql命名, -p 指定端口映射,-v 指定挂载宿主机目录,-e 指定环境变量,-d 指定镜像
          - docker start/stop/restart <容器名或ID> 
              - 启动, 停止, 重启(相当于停止+启动)
          - docker rm <容器名或ID>
              - 删除指定的容器,该容器必须已经停止运行
          - docker commit <容器名或ID>
              - 使用容器创建镜像
          - docker push [仓库名:镜像名]
              - 将本地镜像推送至远程仓库
          - docker ps [OPTIONS] 
              - 查看容器
              - 如: docker ps:查看正在运行的容器docker ps -a:查看所有的容器,包括已经停止的
          - docker images [OPTIONS] [REPOSITORY[:TAG]]
              - 查看本地有哪些镜像
          - docker logs <容器名或ID>
              - 查看容器日志
          - docker port <容器名或ID>
              - 查看容器端口映射情况
          - docker exec -it <容器名或ID> bash
              - 以交互模式进入正在运行的容器,输入 exit 则退出
原文  https://segmentfault.com/a/1190000018521194
正文到此结束
Loading...