# service **Repository Path**: thales-jiang/service ## Basic Information - **Project Name**: service - **Description**: linux nginx tomcat mysql - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-12-31 - **Last Updated**: 2022-06-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # service 服务器架构 # 分布式系统 分布式系统(distributed system)是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。 ## 特征 分布式系统是多个处理机通过通信线路互联而构成的松散耦合的系统。从系统中某台处理机来看,其余的处理机和相应的资源都是远程的,只有它自己的资源才是本地的。至今,对分布式系统的定义尚未形成统一的见解。一般认为,分布式系统应具有以下四个特征: 1. 分布性。分布式系统由多台计算机组成,它们在地域上是分散的,可以散布在一个单位、一个城市、一个国家,甚至全球范围内。整个系统的功能是分散在各个节点上实现的,因而分布式系统具有数据处理的分布性。 2. 自治性。分布式系统中的各个节点都包含自己的处理机和内存,各自具有独立的处理数据的功能。通常,彼此在地位上是平等的,无主次之分,既能自治地进行工作,又能利用共享的通信线路来传送信息,协调任务处理。 3. 并行性。一个大的任务可以划分为若干个子任务,分别在不同的主机上执行。 4. 全局性。分布式系统中必须存在一个单一的、全局的进程通信机制,使得任何一个进程都能与其他进程通信,并且不区分本地通信与远程通信。同时,还应当有全局的保护机制。系统中所有机器上有统一的系统调用集合,它们必须适应分布式的环境。在所有CPU上运行同样的内核,使协调工作更加容易。 ## 优点 1. 资源共享。若干不同的节点通过通信网络彼此互联,一个节点上的用户可以使用其他节点上的资源,如分布式系统允许设备共享,使众多用户共享昂贵的外部设备,如彩色打印机;允许数据共享,使众多用户访问共用的数据库;可以共享远程文件,使用远程特有的硬件设备(如高速阵列处理器),以及执行其他操作。 2. 加快计算速度。如果一个特定的计算任务可以划分为若干个并行运行的子任务,则可把这些子任务分散到不同的节点上,使它们同时在这些节点上运行,从而加快计算速度。另外,分布式系统具有计算迁移功能,如果某个节点上的负载太重,则可把其中一些作业移到其他节点去执行,从而减轻该节点的负载。这种作业迁移称为负载平衡。 3. 可靠性高。分布式系统具有高可靠性。如果其中某个节点失效了,则其余的节点可以继续操作,整个系统不会因为一个或少数几个节点的故障而全体崩溃。因此,分布式系统有很好的容错性能。 系统必须能够检测节点的故障,采取适当的手段,使它从故障中恢复过来。系统确定故障所在的节点后,就不再利用它来提供服务,直至其恢复正常工作。如果失效节点的功能可由其他节点完成,则系统必须保证功能转移的正确实施。当失效节点被恢复或者修复时,系统必须把它平滑地集成到系统中。 4. 通信方便、快捷。分布式系统中各个节点通过一个通信网络互联在一起。通信网络由通信线路、调制解调器和通信处理器等组成,不同节点的用户可以方便地交换信息。在低层,系统之间利用传递消息的方式进行通信,这类似于单CPU系统中的消息机制。单CPU系统中所有高层的消息传递功能都可以在分布式系统中实现,如文件传递、登录、邮件、Web浏览和远程过程调用( Remote Procedure call,RPC)。 分布式系统实现了节点之间的远距离通信,为人与人之间的信息交流提供了很大方便不同地区的用户可以共同完成一个项目,通过传送项目文件,远程登录进入对方系统来运行程序,如发送电子邮件等,协调彼此的工作。 ## 缺点 尽管分布式系统具备众多优势,但它也有自身的缺点,主要是可用软件不足,系统软件、编程语言、应用程序以及开发工具都相对很少。此外,还存在通信网络饱和或信息丢失和网络安全问题,方便的数据共享同时意味着机密数据容易被窃取。虽然分布式系统存在这些潜在的问题,但其优点远大于缺点,而且这些缺点也正得到克服。因此,分布式系统仍是人们研究、开发和应用的方向 ## 来源 孟庆昌主编.操作系统:中央广播电视大学出版社,2015.01:第216页 # container 容器 我们后面的安装,大部分使用的docker这种容器 1. 可以在单独服务器配置多个不同的环境 2. 很多现成的镜像,直接拉下来就可以用,不用过多配置 3. 自己可以创建自己需要的镜像,并且分享给别人直接使用 4. 跨平台,我们可以在win或者mac下做好一个镜像,然后直接在linux上使用 ## docker Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 [详情...](./container/docker.md) ## kubernetes kubernetes,简称K8s,是用8代替8个字符“kubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。 [详情...](./container/kubernetes.md) # balance 负载均衡 负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。 负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务 ## DNS 一个域名轮询指向多个IP完成负载均衡 [详情...](./balance/dns.md) ## Nginx 高性能、高并发的web服务器;功能包括负载均衡、反向代理、静态内容缓存、访问控制;工作在应用层 [详情...](./balance/nginx.md) ## LVS Linux virtual server,基于集群技术和Linux操作系统实现一个高性能、高可用的服务器;工作在网络层 [详情...](./balance/linux-virtual-server.md) # webserver 网站服务 ## Java Tomcat Apache Jboss spring [详情...](./webserver/java.md) ## Python gunicorn uwsgi twisted webpy tornado flask django [详情...](./webserver/python.md) ## PHP Nginx Apache fpm laravel thikphp [详情...](./webserver/php.md) # service SOA(Service Oriented Archicture) ESB(Enterprise Service Bus) 微服务(microservice) # cache 缓存服务 ## redis 比memcache支持类型更多 [详情...](./cache/redis.md) ## memcache [详情...](./cache/memcache.md) # rpc框架: ## grpc ## dubbo ## brpc # 协调中心 ## zookeeper # 消息队列: ## kafka ## rabbitMQ # RocketMQ # 实时数据平台: ## storm ## akka # 离线数据平台: ## hadoop ## spark # dbproxy: ## Atlas ## DBProxy ## Amoeba ## cobar ## TDDL # db: ## mysql ## oracle ## MongoDB # 搜索: ## elasticsearch ## solr # 日志: ## rsyslog ## elk ## flume