zoukankan      html  css  js  c++  java
  • 第1次实践作业

    课程调查

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

    -正所谓"实践是检验真理的绝对标准",没有实践化的学习只是空谈理论。目前在学习系统结构理论的过程中,虽大致能明白其中原理,却对这门课学习后能做些什么还是朦胧不知。希望通过实践课可以真正学习到相关的实践技术,对未来有所帮助。

    了解微服务

    第一次作业我们将接触一种新型的软件架构——微服务(也许部分同学已经有所了解)。大家要做的是学习并了解该技术,微服务是什么,有什么特点,相较于传统的软件架构,它有什么优缺点,它是怎样部署的。

    • 前提概念了解
      ——系统架构设计:设计描述了在应用系统的内部,如何根据业务、技术、组织、灵活性、可扩展性以及可维护性等多种因素,将应用系统划分成不同的部分,并使这些部分彼此之间相互分工、相互协作,从而为用户提供某种特定的价值的方式。
      ——目前:三层架构-分成表示层、逻辑业务层、数据传输层。由于仅是逻辑分层并非物理分层,所以仍是单块架构。
    • 微服务概念
      ——微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务于服务间采用轻量级的通信机制互相沟通(通常是基于 HTTP 的 RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。
    • 微服务特点
      1、单一职责
      微服务架构中的每个服务,都是具有业务逻辑的,符合高内聚、低耦合原则以及单一职责原则的单元,不同的服务通过“管道”的方式灵活组合,从而构建出庞大的系统。
      2、轻量级通信
      服务之间通过轻量级的通信机制实现互通互联,而所谓的轻量级,通常指语言无关、平台无关的交互方式。
      3、独立型
      每个服务在应用交付过程中,独立地开发、测试和部署。
      4、进程隔离
      在微服务架构中,应用程序由多个服务组成,每个服务都是高度自治的独立业务实体,可以运行在独立的进程中,不同的服务能非常容易地部署到不同的主机上。
    • 微服务优缺点
      优点
      1、微服务也可以被认为是一种组件,但是跟传统组件的区别在于它可以独立部署,因此它的一个显著的优势。
      2、它在组件与组件之间定义了清晰的、语言无关、平台无关的规范接口,耦合度低,灵活性非常高。
      3、在单块架构中,企业一般会根据技能划分团队,在这种组织架构下,即便是简单的需求变更都有可能需要跨团队协作,沟通成本很高。而在微服务架构中,它提倡以业务为核心,按照业务能力来组织团队,团队中的成员具有多样性的技能。
      4、在单块架构中,应用基本上是基于“项目模式”构建的,即项目启动时从不同技能资源池中抽取相关资源组成团队,项目结束后释放所有资源。这种情况下团队成员缺乏主人翁意识和产品成就感。在微服务架构中,提倡采用“产品模式”构建,即更倾向于让团队负责整个服务的生命周期,以便提供更优质的服务。
      5、微服务架构中,提倡针对不同的业务特征选择合适的技术方案,有针对性的解决具体业务问题,而不是像单块架构中采用统一的平台或技术来解决所有问题。
      6、微服务架构提供自主管理其相关的业务数据,这样可以随着业务的发展提供数据接口集成,而不是以数据库的方式同其他服务集成。另外,随着业务的发展,可以方便地选择更合的工具管理或者迁移业务数据。
      7、在微服务架构的实践过程中,对持续交付和部署流水线的要求很高,将促进企业不断寻找更高效的方式完成基础设施的自动化及 DevOps 运维能力的提升。
      缺点
      1、分布式调用严重依赖于网络的可靠性和稳定性。
      2、微服务架构是基于分布式的系统,而构建分布式系统必然会带来额外的开销。
      3、运维主要包括配置、部署、监控与告警和日志收集四大方面。微服务架构中,每个服务都需要独立地配置、部署、监控和收集日志,成本呈指数级增长。
      4、在微服务架构中,每个服务都独立部署,交付周期短且频率高,人工部署已经无法适应业务的快速变化。
      5、在微服务架构的实施过程中,开发人员和运维人员的角色发生了变化,开发者将承担起整个服务的生命周期的责任,包括部署和监控;而运维则更倾向于顾问式的角色,尽早考虑服务如何部署。
      6、服务间的依赖测试和依赖管理在面对众多服务业务单元具有不少难度。
    • 微服务部署
      部署微服务

    了解docker技术

    • docker概念
      镜像
      ——就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
      容器
      ——镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
      仓库
      仓库可看着一个代码控制中心,用来保存镜像
    • docker环境搭建
      尝试过搭建Window环境下的docker,但基于家庭版win10内连Hyper-V都不太兼容,果断被劝退,以下基于Linux的环境搭建
      通过docker仓库进行环境安装

    容器使用

    1、拉取镜像

    2、打开容器和退出容器

    3、启动已停止运行的容器
    i查看容器记录

    ii启动容器并后台运行

    4、停止与重启容器

    5、进入容器(使用exec指令退出容器时不会关闭容器)

    6、容器的删除

    仓库与镜像

    1、创建镜像仓库

    2、登入仓库

    3、拉去镜像(如上已经拉取过ubuntu)
    4、推送自己的镜像

  • 相关阅读:
    django控制台输出sql日志
    Find概述
    命令大全
    京东智联云在 Serverless 的探索
    如何优雅地部署一个 Serverless Next.js 应用
    腾讯云 Serverless 保障《创造营》硬糖少女 C 位出道
    Serverless 应用实践及典型案例解析
    LeetCode 数组:62. 不同路径(动态规划 带记忆的递归)
    LeetCode 数组:56.合并区间(数组的自带排序函数 区间合并问题)
    LeetCode 数组:162. 寻找峰值(二分法)
  • 原文地址:https://www.cnblogs.com/jay-home/p/12704482.html
Copyright © 2011-2022 走看看