前言
上一篇主要介绍了DNS的作用及工作原理,这篇主要从实践的角度,一步步配置DNS解析,包括DNS的负载均衡,智能链路解析,以及CDN加速等功能。
zookeeper是java语言编写,由apache开源的一款分布式协调服务,用于协调各业务系统有条不絮的提供服务,当然zookeeper本身也支持分布式的,提供稳定可靠的服务。例如:阿里开源的RPC框架dubbo采用zookeeper实现服务自动发现和治理,百度开源的配置管理系统disconf使用zookeeper实现全局配置管理,我们也可以使用zookeeper实现业务上的分布式锁等效果。
在java中通过使用Runtime.getRuntime().addShutdownHook(Thread hook)方式,向JVM中注册一系列shutdownHook,当JVM关闭时,会一一调用注册的hook,通过利用这一特性,我们可以在钩子中做资源的回收和释放等操作。
jdbc是java内置的一套数据库操作接口规范,对该规范实现的有mysql, oracle, sqlite等,是一种典型的桥接模式设计思想,将接口规范与具体实现进行分离解耦。
业务层仅依赖规范中定义的一系列接口,通过动态注入具体实现,比如引入sqlite实现包(通过Class.forName(“org.sqlite.JDBC”)),如果哪天数据库变成mysql数据库了,我们仅需要修改动态注入的这一行代码即可完全替换,从而保证对业务代码的少侵入,甚至是透明的,降低代码的耦合度,这也是软件设计原则中面向接口编程,面向抽象编程的思想。并且sl4j日志规范跟jdbc是一样的设计思想(其中logback只是对sl4j的其中一种实现而已)。
一般web网站请求大致分为两类: ajax动态请求和静态资源请求(css, js, 图片资源及视频资源等)。而nginx是处理静态资源的一大神器,开启sendfile机制,使用linux内核提供的零拷贝技术,减少资源文件在用户态和内核态之间的内存拷贝和上下文切换带来的性能开销,并支持反向代理,可以很方便的控制静态资源文件缓存有效期等。同时利用tomcat应用服务器的特性,处理动态请求,比如ajax请求,http接口请求等,然后在流量接入层利用haproxy做动静分离和负载均衡,将动态请求分流到tomcat应用服务器集群,将静态资源请求分流到nginx静态资源服务器集群。
今天听公司的同事介绍了go语言,被go语言的高并发所吸引,打算从今天起开始学习golang这一门开发语言,首先,简单介绍一下go,go是google开发的一种编译型,可并行化,具有垃圾回收功能的编程语言。于2009年11月正式宣布推出,成为开放源代码项目,并在Linux及Mac OS X平台上进行了实现,后追加Windows系统下的实现。go既有像java一样的内存回收机制,让我们不用关心内存的回收与释放,又具备C一样的并发性能,是高性能,高并发服务端开发的首选语言。