MongoDB
MongoDB简介MongoDB是一个开源、高性能、无模式的文档型数据库,当初的设计就是用于简化开发和方便扩展,是NoSQL数据库产品中的一种。是最像关系型数据库(MySQL)的非关系型数据库。它支持的数据结构非常松散,是一种类似于 JSON 的 格式叫BSON,所以它既可以存储比较复杂的数据类型,又相当的灵活。
MongoDB中的记录是一个文档,它是一个由字段和值对(field:value)组成的数据结构。MongoDB文档类似于JSON对象,即一个文档认为就是一个对象。字段的数据类型是字符型,它的值除了使用基本的一些类型外,还可以包括其他文档、普通数组和文档数组。
常见运用场景MongoDB常用于对数据操作具有“三高”需求的场景,可以理解为高性能版mysql主要解决海量数据的访问效率问题,不像redis用于处理数据量较小的高性能操作上。
场景的主要特点:
数据量大
写入操作频繁(读写都很频繁)
价值较低的数据,对事务性要求不高
解释:“三高”需求:• High performance - 对数据库高并发读写的需求。• Huge Storage - 对海量数据的高效率存储 ...
Docker高级
Docker高级DockerFileDockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。
构建三部曲:
编写Dockerfile文件
docker build命令构建镜像
docker run依镜像运行容器实例
常用保留字指令
FROM:基础镜像,当前新镜像是基于哪个镜像的,指定一个已经存在的镜像作为模板,第一条必须是from
MAINTAINER:镜像维护者的姓名和邮箱地址
RUN:容器构建时需要运行的命令
shell格式:
exec格式:
EXPOSE:当前容器对外暴露出的端口
WORKDIR:指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点
USER:指定该镜像以什么样的用户去执行,如果都不指定,默认是root
ENV:用来在构建镜像过程中设置环境变量
ADD:将宿主机目录下的文件拷贝进镜像且会自动处理URL和解压tar压缩包
COPY:类似ADD,拷贝文件和目录到镜像中。 将从构建上下文目录中 < 源路径> 的文件/目录复制到新的一层的镜像内的 <目标路径> 位置 ...
docker基础
Docker前言Docker 是一个开源的应用容器引擎,Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化,解决了运行环境和配置问题的软件容器, 方便做持续集成并有助于整体发布的容器虚拟化技术,达到应用程式跨平台间的无缝接轨运作。
优点:
快速,一致地交付应用程序:Docker 允许开发人员使用您提供的应用程序或服务的本地容器在标准化环境中工作,从而简化了开发的生命周期。
响应式部署和扩展:Docker 的可移植性和轻量级的特性,还可以使您轻松地完成动态管理的工作负担,并根据业务需求指示,实时扩展或拆除应用程序和服务。
在同一硬件上运行更多工作负载:它为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案,不像虚拟机一样将整个操作系统进行镜像打包,它只基于一个操作系统核心。
Docker架构Docker包含三个主要要素:
镜像(Image):相当于是一个 root 文件系统,比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件 ...
nginx(六)制作下载站点
制作下载站点实现:相关命令:
autoindex:启用或禁用目录列表输出 autoindex on\|off;
autoindex_exact_size:对应HTLM格式,指定是否在目录列表展示文件的详细大小 autoindex_exact_size on|off;
autoindex_format:设置目录列表的格式 autoindex_format html|xml|json|jsonp;
autoindex_localtime:对应HTML格式,是否在目录列表上显示时间 autoindex_localtime on | off;
具体配置:1234567location /download{ root /usr/local; autoindex on; autoindex_exact_size on; autoindex_format html; autoindex_localtime on;}
效果:
如果需要对下载资源进行权限验证可以配置来进行用户认证
相关指令:
auth_ba ...
nginx(五)动静分离
Nginx动静分离因为Nginx在处理静态资源的时候,效率是非常高的,而且Nginx的并发访问量也是名列前茅,而Tomcat则相对比较弱一些,所以把静态资源交个Nginx后,可以减轻Tomcat服务器的访问压力并提高静态资源的访问速度。动静分离以后,降低了动态资源和静态资源的耦合度。如动态资源宕机了也不影响静态资源的展示。
环境配置使用Nginx的反向代理,将请求转给Tomcat进行处理。
12345678910upstream webservice { server 192.168.200.146:8080; # web服务器的地址}server{ listen 80; server_name localhost; location /demo { proxy_pass http://webservice; }}
具体实现1.将demo.war项目中的静态资源都删除掉,重新打包生成一个war包
2.将war包部署到tomcat中,把之前部署的内容删除掉
123进 ...
nginx(四)缓存集成
缓存集成前言Nginx是从0.7.48版开始提供缓存功能。Nginx是基于Proxy Store来实现的,其原理是把URL及相关组合当做Key,在使用MD5算法对Key进行哈希,得到硬盘上对应的哈希目录路径,从而将缓存内容保存在该目录中。
相关指令proxy_cache指令proxy_cache:该指令用来开启或关闭代理缓存,如果是开启则自定使用哪个缓存区来进行缓存。
proxy_cache zone_name|off;
属性说明:
zone_name:指定使用缓存区的名称
proxy_cache_path指令proxy_cache_path:该指定用于设置缓存文件的存放路径
proxy_cache_path path [levels=number] keys_zone=zone_name:zone_size [inactive=time]\[max_size=size];
属性说明:
path:缓存路径地址,如:
1/usr/local/proxy_cache
levels: 指定该缓存空间对应的目录,最多可以设置3层,每层取值为1|2如 :
...
nginx(三)负载均衡
Nginx负载均衡前言早期的网站流量和业务功能都比较简单,单台服务器足以满足基本的需求,但是随着互联网的发展,业务流量越来越大并且业务逻辑也跟着越来越复杂,单台服务器的性能及单点故障问题就凸显出来了,因此需要多台服务器进行性能的水平扩展及避免单点故障出现。
负载均衡就是一种将不同用户的请求流量分发到不同的服务器上的技术
具体作用:1、解决服务器的高并发压力,提高应用程序的处理性能。
2、提供故障转移,实现高可用。
3、通过添加或减少服务器数量,增强网站的可扩展性。
4、在负载均衡器上进行过滤,可以提高系统的安全性。
实现方式手动选择这种方式比较原始,只要实现的方式就是在网站主页上面提供不同线路、不同服务器链接方式,让用户来选择自己访问的具体服务器,来实现负载均衡。
DNS轮询大多域名注册商都支持对同一个主机名添加多条A记录,这就是DNS轮询,DNS服务器将解析请求按照A记录的顺序,随机分配到不同的IP上,这样就能完成简单的负载均衡。DNS轮询的成本非常低,在一些不重要的服务器,被经常使用。
相当于一个域名绑定多个ip,让DNS进行轮询。
但是这种方式有两个缺点:
可靠性低
负载均衡 ...
Nginx(二)代理服务
Nginx代理服务正向代理正向代理是一个位于客户端和目标服务器之间的代理服务器(中间服务器)。为了从目标服务器取得内容,客户端向代理服务器发送一个请求,并且指定目标服务器,之后代理向目标服务器转发请求,将获得的内容返回给客户端。正向代理的情况下,客户端必须要进行一些特殊的设置才能使用。
在代理服务器中进行设置(这样让客户端直接向代理服务器发请求)
1234567server { listen 82; resolver 8.8.8.8; location /{ proxy_pass http://$host$request_uri; }}
反向代理Nginx反向代理模块的指令是由ngx_http_proxy_module模块进行解析,该模块在安装Nginx的时候已经自己加装到Nginx中了
基本的相关指令proxy_pass指令proxy_pass:该指令用来设置被代理服务器地址,可以是主机名称、IP地址加端口号形式。
proxy ...
Nginx(一)
NginxNginx概念Nginx(“engine x”)一个具有高性能的HTTP和反向代理的WEB服务器,同时也是一个POP3/SMTP/IMAP代理服务器
HTTP:HTTP是超文本传输协议的缩写,是用于从WEB服务器传输超文本到本地浏览器的传输协议,也是互联网上应用最为广泛的一种网络协议。
反向代理:反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。(就相当于去代理服务器而不是客户端)
POP3/SMTP/IMAP:
OP3(Post Offic Protocol 3)邮局协议的第三个版本
SMTP(Simple Mail Transfer Protocol)简单邮件传输协议
IMAP(Internet Mail Access Protocol)交互式邮件存取协议
优点:
速度更快、并发更高:Nginx采用了多进程和I/O多路复用(epoll)的底层实现
配置简单,扩展性强:Nginx的设计极具扩展性,它本身就 ...
Swagger2
Swagger2前言由于目前大趋势,都是进行前后端的开发模式。在这样的背景下,前后端的交流是必不可少的。相信无论是前端还是后端开发,都或多或少地被接口文档折磨过。前端经常抱怨后端给的接口文档与实际情况不一致。后端又觉得编写及维护接口文档会耗费不少精力,经常来不及更新。
Swagger的诞生完美的解决了上述问题,你只需要按照它的规范去定义接口及接口相关的信息。再通过Swagger衍生出来的一系列项目和工具,就可以做到生成各种格式的接口文档,生成多种语言的客户端和服务端的代码,以及在线接口调试页面等等
所提供的开源工具
Swagger Codegen: 通过Codegen 可以将描述文件生成html格式和cwiki形式的接口文档,同时也能生成多钟语言的服务端和客户端的代码。支持通过jar包,docker,node等方式在本地化执行生成。也可以在后面的Swagger Editor中在线生成。
Swagger UI:提供了一个可视化的UI页面展示描述文件。接口的调用方、测试、项目经理等都可以在该页面中对相关接口进行查阅和做一些简单的接口请求。该项目支持在线导入描述文件和本地部署UI项目。
...