AidanSu

Quick notes


  • 首页

  • 归档

  • 标签

  • 关于

《好设计,改变世界的力量》读书笔记

发表于 2017-07-14 | 分类于 阅读 | 阅读次数


阅读全文 »

Rancher 管理平台

发表于 2017-06-27 | 分类于 编程 | 阅读次数

Rancher是一个开源的全栈化企业级容器管理平台,也是全球唯一提供 Kubernetes、Mesos 和 Swarm 三种调度工具的企业级分发版和商业技术支持的容器管理平台。全图形化 UI 界面,简单易用。文档支持比较完善,特别是中文资源比较丰富。

中文网站:http://www.cnrancher.com/
最新文档(英文,201707): http://docs.rancher.com/rancher/v1.6/en/

准备一台管理机

管理机是一台安装 docker 的 64 位 Linux 主机,内核版本 3.10+(用 uname -a 检查),内存至少有 1 GB 。 假设该机器(虚拟机)配置是: hostname = manager, ip=192.168.56.100,运行 Ubuntu service 16.04。

Rancher 版本

Rancher 有两个不同的版本,不同版本将有不同的开发文档。

  • rancher/server:latest 最新的开发版本,适用于开发新功能,不适用于部署在生产环境中。
  • rancher/server:stable 最新的稳定版本,适用于部署在生产环境中。
    阅读全文 »

Docker Swarm 集群

发表于 2017-06-26 | 分类于 编程 | 阅读次数

Swarm 在 Docker 1.12 版本之前属于一个独立的项目,在 Docker 1.12 版本发布之后,该项目合并到了 Docker 中,成为 Docker 的一个子命令。目前,Swarm 是 Docker 社区提供的唯一一个原生支持 Docker 集群管理的工具。它可以把多个 Docker 主机组成的系统转换为单一的虚拟 Docker 主机,使得容器可以组成跨主机的子网网络。

了解 Swarm 集群

群集是一组运行 Docker 的计算机组成,其中部分机器是集群管理机(Swarm Manager) ,其他的是工作机(Worker)。在集群中,在 Manager 机器上使用 Docker 命令,会在群集上执行。群集中的机器可以是物理机或虚拟机。加入群集后,它们被统称节点(Node)。

Swarm 管理机可以使用几种策略来运行容器,例如“最空闲节点”- 容器会填充最少使用的机器。或“全局策略”,它确保每个机器能只能获得指定容器的一个实例。您可以将这些策略写在 docker-compose.yml 这样的服务组合定义文件中,Swarm管理机会按策略部署。

Swarm Manager 是群集中唯一可以执行 docker 命令的机器,或授权其他机器作为工人机(worker)加入群集。worker 只是提供能力,没有权力指挥其他机器工作。

如果您已经熟悉单主机中使用 Docker。现在,可切换到 Docker 集群模式。启用群组模式(swarm mode)使当前的机器成为群组管理机。这时,这台 Docker 将运行管理这个群集的指令,而不再是在当前的机器上运行。

阅读全文 »

Docker 镜像、容器与服务

发表于 2017-06-23 | 分类于 编程 | 阅读次数

在上一篇文章《Docker 集群网络规划与 VM 网络配置》中,我们准备好了三台虚拟机,虚拟机使用的是 VirtualBox ,虚拟机安装的是 ubuntu service 16.04 并安装好 docker 。如果还没有配置好的同学可以查看上一篇文章。

Docker 镜像

An image is a read-only template with instructions for creating a Docker Container.

镜像是创建 docker 容器指令的只读模板。包含一个只读的文件系统镜像,应用程序在这个文件系统上运行,并拥有属于自己的网络、内存、CPU 等资源的定义。通常,一个镜像申明了自己主进程的应用。

一个 docker 镜像可以构建于另一个 docker 镜像之上,这种层叠关系可以是多层的。第1层的镜像层我们称之为基础镜像(Base Image),其他层的镜像(除了最顶层)我们称之为父层镜像(Parent Image)。这些镜像继承了他们的父层镜像的所有属性和设置,并在Dockerfile中添加了自己的配置。如在 ubuntu 上添加自己的 apache 文件,然后在 apache 上建立 web 应用文件。

阅读全文 »

Docker 集群网络规划与 VM 网络配置

发表于 2017-06-18 | 分类于 编程 | 阅读次数

我们准备做一个 Docker Swarms 的集群方案,需要 PC 或者 VM 来进行部署。老师说:网络规划是工作开始的第一步。我采用 VM 进行集群部署,所以本文主要介绍 VM 网络配置。如果你电脑多并采用 PC 进行集群部署,可以忽略本文直接看下一篇。

安装 VitualBox

官方下载地址: https://www.virtualbox.org/ 不同系统下载不同的版本哦!
检查电脑 CPU 虚拟化是否有开启,没有开启的话虚拟机只能装32位系统,那就不方便后续操作了。

下载并安装 Ubuntu service 16.04

官方下载地址: https://www.ubuntu.com/download/server 下载64位的版本

阅读全文 »

Docker 简单介绍和安装

发表于 2017-05-23 | 分类于 编程 | 阅读次数

什么是 Docker

Docker 是一个基于Linux容器的高级容器引擎,基于go语言开发,源代码托管在 Github 上,遵从Apache2.0协议开源。Docker的目标是实现轻量级的操作系统虚拟化解决方案。Docker支持大部分的Linux发行版,通过使用Docker容器,就可以在不同的操作系统,不同的机器上运行自己的应用,不用关心硬件、运行环境之类的配置,应用程序的迁移变得非常简单。Docker 通过分层镜像标准化和内核虚拟化技术,Docker使得应用开发者和运维工程师可以以统一的方式跨平台发布应用,并且以几乎没有额外开销的情况下提供资源隔离的应用运行环境。

阅读全文 »

构建 RESTful Service Client

发表于 2017-05-22 | 分类于 编程 | 阅读次数

在上一篇文章《构建 RESTful Service 》中我们已经介绍了构建 RESTful 服务端,现在我们来构建 RESTful 的客户端。每种框架都提供了各种访问服务端的实现。如 Apache Httpclient,JAX-RS2 client,Feign Client,Spring RestTemplate 。其实都没有什么特别,就是普通 HTTP 访问协议进一步的封装。本文主要介绍两种方式,分别是 Spring RestTemplate 和 Feign Client,如果喜欢使用 Spring 的同学可能会偏向使用 RestTemplate,它提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率,所以很多客户端比如 Android 或者第三方服务商都是使用 RestTemplate 请求 RESTful 服务。Feign Client 可以把请求的服务写成接口的形式,请求回来的是一个本地接口的一个实现,极大地方便了使用和无缝调用。

本次构建的客户端没有涉及异步访问 REST 服务,我将会另写一片文章专门介绍异步访问 REST 服务,因为这项技术相对来说难一些,内容比较多,也更为重要。

创建 REST-Client 服务端项目

使用 maven 创建 maven-archetype-quickstart 为原型的项目 REST-Client 。

阅读全文 »

构建 RESTful Service

发表于 2017-05-18 | 分类于 编程 | 阅读次数

RESTful架构,就是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。REST这个词,是Roy Thomas Fielding 在他2000年的博士论文中提出的。RESTful service是一种架构模式,它是轻量级 web 服务,发挥 HTTP 协议的原生的GET,PUT,POST,DELETE。近几年,随着云服务技术的发展,其简单方便、易于理解和扩展,一举超越 SOAP 协议,成为事实的 Web 服务标准。Web 服务开发及其简单,就是定义接口,利用工具发布服务;客户端也是定义接口,利用工具生成通讯代理;HTTP 协议作为通讯工具。

怎么构建 RESTful Service,有哪几种方式可以构建呢?本文通过 Spring 和 JAX-RS 这两种方式来实现 RESTful Service 服务端。本文代码基本来源与官方文档。项目还是基于 Spring Boot 来开发,因为 RESTful Service 其中一种是 Spring 的方式实现,还有 Spring Boot 真的太方便了。

创建 REST-Service 服务端项目

使用 maven 创建 maven-archetype-quickstart 为原型的项目 REST-Service 。

阅读全文 »

Spring MVC 连接 MySQL 数据库 JPA

发表于 2017-05-03 | 分类于 编程 | 阅读次数

在上一篇博客《Spring MVC 连接 MySQL 数据库 Hibernate》中介绍了在 Spring MVC 中使用 Hibernate 来链接数据库,虽然比 JDBC 方便了很多,但复杂一些的查询还是很麻烦,有没有更方便的方法?当然有,在 Java EE 5 规范中已经提出的 Java 持久化接口 Java Persistence API 简称 JPA。它吸取了目前 Java 持久化技术的优点,旨在规范、简化 Java 对象的持久化工作。JPA 的宗旨是为 POJO 提供持久化标准规范,并不是依赖于某一个ORM框架,Hibernate3.2+、TopLink 10.1.3 以及 OpenJPA 都提供了 JPA 的实现。JPA 的总体思想和现有 Hibernate、TopLink、JDO等ORM框架大体一致。主要提供:ORM 映射元数据、操作实体对象 API、查询语言。

在 Spring 2.0.1 中,正式提供对 JPA 的支持。Spring 使得 JPA 配置变得更加灵活,将 EntityManager 的创建与销毁、事务管理等代码抽取出来,并由其统一管理,开发者只需关心核心业务逻辑的实现代码,无需过多关注 EntityManager 的创建、事务处理等 JPA 相关的处理。Spring Data JPA 则更进一步,主要针对的就是 Spring 唯一没有简化到的业务逻辑代码,通过规范方法的名字,根据符合规范的名字来确定方法需要实现什么样的逻辑,开发者连仅剩的实现持久层业务逻辑的工作都省了,唯一要做的,就只是声明持久层的接口,其他都交给 Spring Data JPA 来帮你完成!

JPA 只是一种规范,需要 Provider 来实现其功能的,Hibernate 就是 JPA Provider 中很强的一个,从功能上来说,JPA 就是 Hibernate 功能的一个子集。Hibernate 从3.2开始,就开始兼容 JPA。我们还是通过项目来学习简单的 JPA 操作,还是可以使用上次的 spring-mvc-mysql 项目稍作修改,不过改成用 Hibernate 分支。

阅读全文 »

Spring MVC 连接 MySQL 数据库 Hibernate

发表于 2017-05-02 | 分类于 编程 | 阅读次数

在上一篇博客《Spring MVC 连接 MySQL 数据库 JDBC》中介绍了在 Spring MVC 中使用 JDBC 来链接数据库。JDBC 可以说是访问数据库的最原始、最直接的方法。这种方式的特点是运行效率高,而缺点是程序代码中嵌入大量的 SQL 语句,使得项目难以维护,虽然 MVC 的分层结构把数据持久层单独出来,把数据库访问操作封装起来,业务层只需调用 API 就可以了。但是,如果数据模型非常复杂,代码量较大,特别是访问字段较多的表的时候,代码显得繁琐、累赘,容易出错,就需要非常专业和有经验的开发人员来开发,还需要有足够的时间。

开发人员不是只需要专注于业务逻辑的实现吗?有没有中间件可以做这个事情呢?是的,目前已经有好多种现成的持久化中间件可以选择,有:Hiherante,TopLink,JDO等,其中 Hiberante 最受欢迎,它是基于 Java 的开发源代码的持久化中间件,对 JDBC 做了轻量级封装,不仅提供了 ORM 映射服务,还提供数据查询和缓存功能,开发人员可以方便地通过它提供的 API 来操纵数据库。大大减少了开发的工作量,降低了持久化层开发的门槛。

我们还是通过项目来学习简单的 Hiberante 链接 MySQL 数据库。可以使用上次的 spring-mvc-mysql 项目 JDBC 分支,修改 Dao 持久化层就可以了,这就是 MVC 分层结构的强大之处。

阅读全文 »
12345
aidan

aidan

沉迷学习无法自拔

49 日志
4 分类
50 标签
GitHub 微博 豆瓣 知乎
© 2017 - 2021 aidan
由Hexo强力驱动 | 粤ICP备12003586号