Ethan's Blog


  • Home

  • Archives

  • Tags

  • Search

Kubernetes - 生产级容器集群平台

Posted on 2019-09-04

Kubernetes 是 Google 团队发起并维护的开源容器集群管理系统,底层基于 Docker、rkt 等容器技术,提供强大的应用管理和资源调度能力。

简介

Kubernetes 是 Google 公司于 2014 年开源的容器集群管理项目。该项目基于 Go 语言实现,遵守 Apache v2 许可,试图为基于容器的应用部署和生产管理打造一套强大并且易用的操作平台。

目前被云原生计算基金会(Cloud Native Computing Foundation,CNCF)管理,以开源项目形式持续演化。
Kubernetes 拥有鲜明的技术优势:

  • 优秀的 API 设计,以及简洁高效的架构设计;
  • 基于微服务模式的多层资源抽象模型,兼顾灵活性与可操作性;
  • 可拓展性好,模块化容易替换,伸缩能力极佳;
  • 自动化程度高,真正实现所得即所用;
  • 部署支持多种环境,包括虚拟机、裸机部署,还很好支持常见云平台;
  • 支持丰富的运维和配置工具,方便用户对集群进行性能测试、问题检查和状态监控;
  • 自带控制台、客户端命令等工具。
Read more »

数据抽象

Posted on 2019-08-29

数据类型指的是一组值和一组对这些值的操作的集合。原则上所有程序都只需要使用原始数据类型即可,但为了在更高层次的抽象上编写程序更加方便,重点学习定义和使用数据类型,这个过程也被称为数据抽象。

Java 编程的基础主要是使用 class 关键字构造被称为引用类型的数据类型。这种编程风格称为面向对象编程,因为它的核心概念是对象,即保存了某个数据类型的值的实体。

抽象数据类型(ADT)是一种能够对使用者隐藏数据表示的数据类型:

  • 在使用 ADT 时,我们的注意力集中在 API 描述的操作上,而不会去关心数据的表示;
  • 在实现 ADT 时,我们的注意力集中在数据本身,并将实现对该数据的各种操作;

在程序设计上,ADT 支持封装:

  • 以适用于各种用途的 API 形式,准确地定义问题;
  • 用 API 的实现描述算法和数据结构;

使用抽象数据类型

要使用一种数据类型并不一定非得知道它是如何实现的,所以我们首先来编写一个使用一种名为 Counter 的简单数据类型的程序。

要使用 Counter 对象,首先需要了解应该如何定义数据类型的操作,以及在 Java 语言中应该如何创建和使用某个数据类型的对象。

Read more »

分布式处理与大数据平台

Posted on 2019-08-25

分布式系统和大数据处理平台是目前业界关注的热门技术。三大重量级武器:Hadoop、Spark、Storm,以及新一代的数据采集和分析引擎 Elasticsearch。
实际上,摩尔定律的失效,必将导致越来越多的复杂任务必须采用分布式架构进行处理。已有的开源平台提供了很好的实现参考,方便用户将更多的精力放到核心业务的维护上。

Hadoop

Hadoop 是 Apache 软件基金会旗下的一个开源分布式计算平台,基于 Java 语言实现,由三个核心子系统组成:HDFS、YARN、MapReduce。其中,HDFS 是一套分布式文件系统;YARN 是资源管理系统,MapReduce 是运行在 YARN 上的应用,负责分布式处理管理。

核心子系统说明如下:

  • HDFS:一个高度容错性的分布式文件系统,适合部署在大量廉价的机器上,提供高吞吐量的数据访问;
  • YARN:资源管理器,可为上层应用提供统一的资源管理和调度,兼容多计算框架;
  • MapReduce:是一种分布式编程模型,把大规模数据集的处理,分发(Map)给网络上的多个节点,之后收集处理结果进行规约(Reduce)。
Read more »

Web 服务与应用

Posted on 2019-08-24

Web 服务和应用是目前互联网技术领域的热门技术。重点介绍如何使用 Docker 来运行常见的 Web 服务器(包括 Apache、Nginx、Tomcat 等),以及一些常见应用(包括 LAMP 和 CI/CD)。
包括 Web 服务在内的中间件领域十分适合引入容器技术:

  • 中间件服务器是除数据库服务器外的主要计算节点,很容易成为性能瓶颈,所以通常需要大批量部署,而 Docker 对于批量部署有着许多先天的优势;
  • 中间件服务器结构清晰,在剥离了配置文件、日志、代码目录之后,容器几乎可以处于零增长状态,这使得容器的迁移更加方便;
  • 中间服务器很容易实现集群,在使用硬件的 F5、软件的 Nginx 等负载均衡后,中间件服务器集群变得非常容易。

需要注意数据的持久化。对于程序代码、资源目录、日志、数据库、文件等需要实时更新和保存的数据,一定要启动数据持久化机制,避免发生数据丢失。

Apache

Apache 是一个高稳定性的、商业级别的开源 Web 服务器,是目前世界使用排名第一的 Web 服务器软件。

在使用 Dockerfile 创建镜像时,会继承父镜像的开放端口,但却不会继承启动命令。因此,需要在 run.sh 脚本中添加启动 sshd 的服务的命令。

Read more »

基础编程模型

Posted on 2019-08-20

我们学习算法的方法是用 Java 编程语言编写的程序来实现算法,这样做是出于以下原因:

  • 程序是对算法精确、优雅和完全的描述;
  • 可以通过运行程序来学习算法的各种性质;
  • 可以在应用程序中直接使用这些算法;

缺点:使用特定的编程语言,会使分离算法的思想和实现细节变得困难。

我们把描述和实现算法所用到的语言特性、软件库和操作系统特性总称为基础编程模型。

Java 程序的基本结构

一段 Java 程序(类)或者是一个静态方法(函数)库,或者定义一个数据类型,会用到下面七种语法,它们是 Java 语言的基础,也是大多数现代语言所共有的:

  • 原始数据类型:在计算机程序中精确地定义整数、浮点数和布尔值等;
  • 语句:声明、赋值、条件、循环、调用和返回;
  • 数组:多个同种数据类型的值的集合;
  • 静态方法:封装并重用代码,使我们可以用独立的模块开发程序;
  • 字符串:一连串的字符,Java 内置了对它们的一些操作;
  • 标准输入/输出:程序与外界联系的桥梁;
  • 数据抽象:使我们可以定义非原始数据类型,进而支持面向对象编程;

要执行一个 Java 程序,首先需要用 javac 命令编译它(*.class),然后再用 java 命令运行它。

Read more »
1…444546…55
necusjz

necusjz

274 posts
16 tags
© 2016 - 2025 necusjz
Powered by Hexo
Theme - NexT.Mist