zoukankan      html  css  js  c++  java
  • 第一次系统综合实践

    一、课程调查

    进入大三下学期的后半段,大学阶段的理论课程应该已经修得八九不离十了,在这个时间点迎来系统综合实践这门课,作为培养计划的一门新课程,我们非常希望了解你们对于课程的希望,请写下你对这门课的认识和你理想中的这门课程是怎么样的。

    一开始以为是比较注重硬件操作的实验,现在看起来似乎更重注软件操作。
    

    二、了解微服务

    微服务是什么

    所谓的微服务是SOA架构下的最终产物,该架构的设计目标是为了肢解业务,使得服务能够独立运行。简单举例:看军事新闻的同学应该都知道,一艘航空母舰作战能力虽然很强,但是弱点太明显,就是防御能力太差,单艘的航空母舰很少单独行动,通常航空母舰战斗群才是主要军事力量,你可以把单艘航母理解为的单体应用(防御差,机动性不好),把航母战斗群(调度复杂,维护费用高)理解为微服务。
    

    微服务的特点

    1、按照业务来划分服务,单个服务代码量小,业务单一,易于维护。
    2、每个微服务都有自己独立的基本组件,例如数据库、缓存等,且运行在独立的进程中。
    3、微服务之间的通信是通过HTTP协议或者消息组件,且具有容错能力。
    4、微服务有一套服务治理的解决方案,服务之间不耦合,可以随时加入和剔除服务。
    5、单个微服务能够集群化部署,并且有负载均衡的能力
    6、整个微服务系统应该有一个完整的安全机制,包括用户验证、权限验证、资源保护等。
    7、整个微服务系统有链路追踪的能力。
    8、有一套完整的实时日志系统。
    

    相较于传统的软件架构,它有什么优缺点

    优点:每个服务足够内聚,足够小,代码容易理解、开发效率提高;服务之间可以独立部署,微服务架构让持续部署成为可能;每个服务可以各自进行负载均衡扩展和数据库扩展,而且,每个服务可以根据自己的需要部署到合适的硬件服务器上;容易扩大开发团队,可以针对每个服务组件开发团队;提高容错性,一个服务的内存泄露并不会让整个系统瘫痪;系统不会被长期限制在某个技术栈上。
    
    缺点:开发人员要处理分布式系统的复杂性;开发人员要设计服务之间的通信机制,对于需要多个后端服务的user case,要在没有分布式事务的情况下实现代码非常困难;涉及多个服务直接的自动化测试也具备相当的挑战性;服务管理的复杂性,在生产环境中要管理多个不同的服务的实例,这意味着开发团队需要全局统筹(PS:现在docker的出现适合解决这个问题);应用微服务架构的时机如何把握?对于业务还没有理清楚、业务数据和处理能力还没有开始爆发式增长之前的创业公司,不需要考虑微服务架构模式,这时候最重要的是快速开发、快速部署、快速试错。
    

    如何部署

    前期阶段,要做好如下事情:
    1.和多方充分沟通,确保能符合客户和组织的需求,并且得到认同
    2.和团队沟通,让队友(开发/测试/运维)理解,并且积极投入
    3.和业务部门沟通,指定版本计划和上线时间
    设计阶段,单微服务必须要满足以下的条件,才符合微服务的基本要求:
    1.标准的 REST 风格接口(基于 HTTP 和 JSON 格式)
    2.独立部署,避免共享数据库(避免因为数据库而影响整个分布式系统)
    3.业务上的高内聚,减少依赖(从设计上要避免服务过大或者太小)
    庞大的分布式系统,需要强大基础设施来支撑,微服务要涉及的基础设施:
    1.CI/CD和自动化(分布式系统几乎不可能通过人工手动发布)
    2.虚拟化技术(要保证微服务运行环境隔离,目前行业主流的是使用 Docker 容器)
    3.日志聚合,全链路监控(高度可观察和分析诊断问题)
    

    三、学习docker技术

    设置仓库

    更新 apt 包索引。

    $ sudo apt-get update
    

    安装 apt 依赖包,用于通过HTTPS来获取仓库:

    $ sudo apt-get install 
    	apt-transport-https  
    	ca-certificates 
    	curl 
    	gnupg-agent 
    	software-properties-common**
    

    添加 Docker 的官方 GPG 密钥:

    $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    

    9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 通过搜索指纹的后8个字符,验证您现在是否拥有带有指纹的密钥。

    $ sudo apt-key fingerprint 0EBFCD88
    

    使用以下指令设置稳定版仓库

    $ sudo add-apt-repository 
    "deb [arch=amd64] https://download.docker.com/linux/ubuntu 
    $(lsb_release -cs) 
    stable"
    
    安装 Docker Engine-Community

    更新 apt 包索引。

    $ sudo apt-get update
    

    安装最新版本的 Docker Engine-Community 和 containerd

    $ sudo apt-get install docker-ce docker-ce-cli containerd.io
    

    测试 Docker 是否安装成功,输入以下指令,打印出以下信息则安装成功:

    $ sudo docker run hello-world
    
    Unable to find image 'hello-world:latest' locally
    latest: Pulling from library/hello-world
    1b930d010525: Pull complete                                                                                                                                  Digest: sha256:c3b4ada4687bbaa170745b3e4dd8ac3f194ca95b2d0518b417fb47e5879d9b5f
    Status: Downloaded newer image for hello-world:latest
    
    
    Hello from Docker!
    This message shows that your installation appears to be working correctly.
    ……
    
    容器运用

    开启容器

    sudo docker pull httpd
    

    退出容器

    exit
    

    查看容器

    sudo docker ps -a
    

    重启容器

    sudo docker restart <容器ID>
    

    进入后台运行的容器

    sudo docker attach <容器ID>
    

    删除容器

    sudo docker rm -f <容器ID>
    
    仓库管理

    登录账号

    sudo docker login
    

    拉镜像到本地

    sudo docker pull httpd
    

    查看本地镜像

    sudo docker images
    

    Push镜像

    sudo docker  tag  <镜像id> <要推入仓库的用户名>/<要推入的仓库名>:<新定义的tag> 
    docker push <要推入仓库的用户名>/<要推入的仓库名>:<镜像标签>
  • 相关阅读:
    Tutorial: Getting Started with TFS in VS2010 (转载)
    Flex开源组件——FlexReport
    GIS和开源见解(摘录)
    Google Wave了解(资料收集)
    分享ArcGis For Flex API 1.3 Diagram
    基于.NET的开源GIS项目收集整理(转载)
    TFS 2010 for SourceSafe Users (转载)
    一个处理UTF8编码文件BOM头的简单方法
    用ISO文件制作启动U盘
    为Ubuntu安装buildessential软件包
  • 原文地址:https://www.cnblogs.com/lx2509/p/12699363.html
Copyright © 2011-2022 走看看