用大白话聊聊分布式系统
2017-03-05 Distributed一提起“分布式系统”,大家的第一感觉就是好高大上啊,深不可测,看各类大牛关于分布式系统的演讲或者书籍,也大多是一脸懵逼。本文期望用浅显易懂的大白话来就什么是分布式系统、分布式系统有哪些优势、分布式系统会面临哪里挑战、如何来设计分布式等方面的话题来展开讨论。
一提起“分布式系统”,大家的第一感觉就是好高大上啊,深不可测,看各类大牛关于分布式系统的演讲或者书籍,也大多是一脸懵逼。本文期望用浅显易懂的大白话来就什么是分布式系统、分布式系统有哪些优势、分布式系统会面临哪里挑战、如何来设计分布式等方面的话题来展开讨论。
如果你的代码使用了 HTML5 的标准,而Thymeleaf 版本来停留在 2.x ,那么如果没有把<input>
闭合,如下:
<form>
First name:<br>
<input type="text" name="firstname">
<br>
Last name:<br>
<input type="text" name="lastname">
</form>
就会抛出如下错误。
org.xml.sax.SAXParseException: 元素类型 "input" 必须由匹配的结束标记 "</input>" 终止。
GFM 是 GitHub Flavored Markdown Viewer 的简称,是一款对 GitHub 友好的 Markdown 编辑器 ,在 Eclipse中可以以插件形式安装。
在使用过程中,我们发现对使用 GFM 编辑过的.md
文件,都会在同个目录下生成.md.html
的同名文件。显然,很多时候,我们并不需要保存.md.html
文件,我们只想把.md
文件存储到代码库。
PMD 是一个源代码分析器。 它发现常见的编程缺陷,如未使用的变量、空 catch 块、不必要的对象创建等等。 它支持Java、JavaScript、Salesforce.com Apex、PLSQL、Apache Velocity、XML、XSL 等。
此外,它包括 CPD(copy-paste-detector,复制粘贴检测器)。 CPD 在Java、C、C++、C#、Groovy、PHP、Ruby、Fortran、JavaScript、PLSQL、Apache Velocity、Scala、Objective C、Matlab、Python、Go、Swift 和 Salesforce.com Apex 中能够发现重复的代码。
本文介绍了如何在 Eclipse 里面安装、使用 PMD 插件的过程。
Checkstyle是一个开发工具,帮助程序员编写符合编码标准的Java代码。 好的代码规范,在一个项目协作的团队中尤为重要。Checkstyle 能够自动化检查Java代码的过程,免去了人工校验的繁琐。 同时,Checkstyle是高度可配置的,可以支持几乎任何编码标准。 只需要提供了一个示例配置文件,就能支持代码的约定。
本文介绍了如何在 Eclipse 里面安装、使用 Checkstyle 插件的过程。
总结自 imooc 上的讲课技巧。对比培养演讲、讲课培训还是比较有帮助的。
WSL(Windows Subsystem for Linux) 是 在Windows系统中为那些熟悉Linux用户准备的诸多子系统功能。换言之,你可以在Windows环境下来执行Linux操作,运行 Linux程序。这对于Windows、Linux双系统有需求的用户来说是个不错的功能。本文详细介绍了如何使用 WSL。
在项目中,我们广泛应用了 zTree 组件(http://www.treejs.cn/),近期发现,在 zTree 的下拉节点中,存在节点右移的问题。
本文介绍了如果在 Eclipse 中安装、使用 PlantUML 插件,来进行常用 UML 图的绘制。
持续集成(Continuous Integration),也就是我们经常说的 CI,是现代软件开发技术的基础。本文论述了如何使用 TeamCity 持续集成工具来实现项目的持续集成。
持续集成(Continuous Integration),也就是我们经常说的 CI,是现代软件开发技术的基础。本文论述了当前软件开发过程中存在的问题,讲解了持续集成、持续集成服务器的概念,最终探讨了为什么我们需要持续集成来解决这些问题。
ToadforDB2 是比较好用的图形界面的DB2管理工具,分为免费版和商业版本。在新版的 ToadforDB2_Freeware_6.x 进行安装时,会提示报错“Toad did not find a default DB2 client”,即找不到 DB2 的客户端,意思是 6 版本区别与 5 版本 所不同的是,它依赖于 DB2 client 的实现。
Todey, jekyll-bootstrap-blog
add an enhancement, that pages can excluded from top bar nav(See https://github.com/waylau/jekyll-bootstrap-blog/issues/3). It’s very uesful to hide the page, but you can still visit it derictly by page’s url.
在传统上,物理机和虚拟机是数据中心的典型的计算单元。当应用部署后,这些机器需要安装各种配置工具来对这些应用做管理。机器通常被组织成集群,提供独立的服务,而系统管理员则来监督其日常的日常运作。最终,这些集群达到其最大容量时,需要多机联网来处理负载,这就对集群的扩展带来了挑战。
在2010年,UC Berkeley 大学就对上述问题,提出了解决方案,这就是现在的 Apache Mesos。Mesos 抽象了 CPU、内存、硬盘资源,让数据中心的功能对外就像是一个大的机器。Mesos 创建一个单独的底层集群来提供他们给应用程序所需要的资源,而不会超出虚拟机和操作系统的性能限制。
本节介绍了 Mesos 在不同平台上的安装和使用过程。
Zabbix 是一个基于 Web 界面的提供分布式系统监控以及网络监控功能的企业级的开源解决方案。
Zabbix 能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位、解决存在的各种问题。
本节介绍了 Zabbix 在不同平台上的安装和使用过程。
Nagios 是一款开源的免费网络监视工具,致力于打造符合行业标准的 IT 基础架构的监控系统。Nagios 提供了服务器、网络和应用的完整的 IT 监控和报警,可以有效监控 Windows、Linux 和 Unix 的主机状态,以及交换机、路由器、打印机等网络设备。在系统或服务状态异常时可以发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信进行通知。
本节介绍了 Nagios 在不同平台上的安装和使用过程。
Redis 不仅仅是简单的 key value 存储,实际上它还是一个 data strutures server(据数结构服务器),用以支持不同的数值类型。在 key value 中,value 不仅仅局限于 string 类型,它可以是更复杂的数据结构:
Apache HBase 是一个分布式的、面向列的开源数据库。正如上一节所提到的,该技术来源于 Google 的 Bigtable。就像 Bigtable 利用了 GFS 所提供的分布式数据存储一样,Apache HBase 在 Hadoop 之上提供了类似于Bigtable 的能力。HBase 是 Apache 的 Hadoop 项目的子项目。HBase 不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是 Apache HBase 基于列的而不是基于行的模式。
Apache Hadoop 是一个由 Apache 基金会所开发的分布式系统基础架构。可以让用户在不了解分布式底层细节的情况下,开发出可靠、可扩展的分布式计算应用。
Apache Hadoop 框架,允许用户使用简单的编程模型来实现计算机集群的大型数据集的分布式处理。它的目的是支持从单一服务器到上千台机器的扩展,充分利用了每台机器所提供本地计算和存储,而不是依靠硬件来提供高可用性。其本身被设计成在应用层检测和处理故障的库,对于计算机集群来说,其中每台机器的顶层都被设计成可以容错的,以便提供一个高度可用的服务。
Apache Hadoop 的框架最核心的设计就是:HDFS 和 MapReduce。HDFS 为海量的数据提供了存储,而 MapReduce 则为海量的数据提供了计算。
尝试从 Windows 桌面系统完全切换到 Linux 系统,拥抱真正的自由软件。本文记录了切换的过程。
本文介绍了什么是远程过程调用(RPC),RPC 有哪些常用的方法,RPC 经历了哪些发展阶段,以及比较了各种 RPC 技术的优劣。
在修改国家项目中间件 edt 时,用 Maven 编译 necc-edt-api 模块时,总是编译不过,并提示了“文件名、目录名或卷标语法不正确”的错误。
本文介绍了在浏览器里什么是混合内容,为什么要禁用混合内容,以及在各种浏览器里面如何启用混合内容。
对 Martin Fowler 的《重构:改善既有代码的设计》一书所做的笔记和总结。
问题背景:自2015年以来,国家项目测试平台 DB2 所有表的表名、表字段等中文注释均开始存在乱码问题,严重影响开发人员对于数据库表含义的理解(特别是在数据库设计文档缺乏的情况下)。
本文记录了解决该历史遗留问题的相关步骤,总结遇到的坑,最后提出解决该问题的方案。
Web API 近几年变得越来越火,而简洁的 API 设计在多后端系统交互应用中也变得尤为重要。通常,会使用 RESTful API 来作为我们的 Web API 。本文介绍了几种简洁 RESTful API 设计的最佳实践。
Hibernate 是 Java EE 应用中流行的 JPA 框架,简单易用,但很多使用过 Hibernate 的开发者都普遍反映 Hibernate 性能低下。究其原因,还是使用者没有对 Hibernate 进行过深入理解,对 Hibernate 的应用也只是浮于表面。本文介绍了几种简单实现 Hibernate 性能优化的方法。
本文演示了如何用 Docker、Gradle 来构建、运行、发布来一个 Spring Boot 应用。
本文介绍了 Docker 在 openSUSE 环境下的详细安装过程,并尝试运行一个简单 Spring Boot 的 image 来感受下 Docker 的风采。
本文演示了如何用 Docker 构建、运行、发布来一个 Spring Boot 应用。
本件详细介绍了如何通过几个简单步骤在 Tomcat 中配置 SSL/TLS 、使用 JDK 生成自签名的证书,最终实现在应用中支持 HTTPS 协议。
什么是同步?什么是异步?阻塞和非阻塞又有什么区别?本文先从 Unix 的 I/O 模型讲起,介绍了5种常见的 I/O 模型。而后再引出 Java 的 I/O 模型的演进过程,并用实例说明如何选择合适的 Java I/O 模型来提高系统的并发量和可用性。
本文介绍了介绍了分布式系统著名的 CAP 理论。什么是 CAP 理论?为什么说 CAP 只能三选二?了解 CAP 对于系统架构又有什么指导意义?本文将一一作答。
本文介绍了 Docker 在 CentOS 环境下的详细安装过程,并尝试运行一个最简单的 image 来感受下 Docker 的风采。
Docker 是 Golang 编写的, 自 2013 年推出以来,受到越来越多的开发者的关注。如果你关注最新的技术发展,那么你一定听说过 Docker。不管是云服务还是微服务(Microservices),越来越多的厂商都开始基于 Docker 作为基础设施自动化的工具。那么什么是 Docker?Docker与传统的虚拟机有什么区别?为何要采用 Docker?如何使用 Docker?
本文,就针对上述提到的问题,来简单介绍下 Docker。
自 2014 年始,Microservices(微服务)一词越来越火爆,不谈 Microservices 彷佛就 out 了。那么什么是 Microservices?Microservices 架构与传统的架构有什么区别?何时应该采用 Microservices?如何构建 Microservices?
本文,就针对上述提到的问题,来简单介绍下 Microservices。