动态 版块 发帖 消息 我的
Loading...
HuPei
一切成功均源自积累!
子版块
tiger
1471
英特尔(Intel) 酷睿系列 CPU处理器 参数和搭配的主板
 1    0  478天前
hupei
64
相对于主机集中式架构,以X86 和云计算为基础、以数据切分为特征的现代分布式架构在扩展性、低成本、降低运行风险等方面的优势明显,已经成为主流的联机交易系统架构方案。3401相对于主机集中式架构,以X86 和云计算为基础、以数据切分为特征的现代分布式架构在扩展性、低成本、降低运行风险等方面的优势明显,已经成为主流的联机交易系统架构方案。本文针对分布式架构在银行核心业务系统中的应用,分享了分库分表、读写分离、数据共享和访问性能优化、高效运维等关键技术方案设计要点。分布式架构概念        各大型国有商业银行经过十多年的发展,都已经实现了数据集中,而且,随着客户服务的不断发展和提升,各家银行核心业务系统的账户量和交易量都已经达到了超大规模,系统的处理能力和性能以及可用性、可靠性、数据一致性、业务连续性等要求极高。在这个过程中,集中式架构发挥了重要作用,各家银行的核心系统基本都构建在集中式架构之上,尤其以大型主机架构为代表。集中式架构下,一般采用纵向扩展的方式即通过增加单机的资源配置来提升系统的处理能力。通过硬件设备和基础软件的集群机制来提升系统的可用性。        本文谈及的分布式架构是指近年来兴起于互联网公司的一种现代分布式架构。分布式架构以X86和云计算为基础、以数据切分(Sharding)、读写分离为特征,采用横向扩展的方式,通过增加服务器的数量,提升系统的处理能力,每个节点都是一个可独立运行的单元,失效时也不会影响应用整体的可用性。另外,系统可以分散到多个节点运行,降低了对单节点的处理能力和可靠性要求,给使用X86服务器替代高性能的主机和小型机服务器创造了条件,可大大降低基础设施的投入成本。        长期以来,银行核心业务系统一直是安全、稳定、可靠的典范。但采用集中式架构的核心业务系统建设费用和运营成本昂贵,随着银行业竞争的加剧,特别是面对采用了低成本分布式架构技术的互联网公司向金融领域的渗透,各大银行都在探索主机迁移方案以节约成本。更大的挑战是随着银行经营转型和业务拓展,核心业务系统的规模急剧扩大,支持的交易模式也更加复杂,核心业务系统处理能力的瓶颈逐渐凸显,需要采取有效措施降低主机负荷,控制运行风险。因此,将分布式架构应用于核心业务系统必然成为各大银行应对上述双重压力的一种选择。困难和挑战        由于分布式架构采用了单体处理能力较小、可靠性较低的常规服务器,与主机或小型机相比存在一些弱点,要将分布式架构应用到银行核心业务系统中,将面临以下困难和挑战。        1.并发处理能力。采用分布式架构的银行核心业务系统一般采用两层结构,即应用服务器层和数据库服务器层,按照SOA的设计原则,部署在应用服务器层的业务逻辑采取服务化和无状态的处理,易于实现横向扩展。而数据库服务器层采取分库分表、读写分离的策略实现处理能力的扩展,如何提高数据库服务器层的并发处理能力是分布式架构在银行核心业务系统应用面临的最大挑战。        2.可用性水平。高可用性是银行核心业务系统最重要的运行指标。各大银行之所以仍然采用主机集中式架构构建核心业务系统,最主要的原因是开放平台比主机的可靠性要低。分布式架构下使用的X86服务器可靠性更低,由于应用服务器层采取了负载均衡及高可用设计,其总体可用性可以达到更高标准。而数据库层采用分库分表和读写分离技术后,也更有利于提高数据库总体可用性,但基础设施包括云平台及网络、存储以及复制、同步软件的可用性将成为主要挑战。            3.交易一致性。交易一致性是银行核心业务系统的基本要求,核心业务系统交易一致性要求远高于电商平台和其他互联网应用。交易一致性指的是数据库事务管理必须满足ACID(原子性Atomic、一致性Consistency、隔离性Isolation、持久性Durability)要求,否则将会发生交易一致性问题。由于分布式架构采取分库分表策略,导致跨库跨表的事务增多,如果采用二阶段提交(Two Phase Commit)机制来进行事务管理,则会引起性能和可用性问题,成为了影响分布式架构在银行核心业务应用的最大障碍。另一个交易一致性问题是由于分布式架构下数据采取读写分离的策略造成的。根据CAP理论:一个系统不能同时满足一致性、可用性和分区容忍性这三个要求。数据库读写分离实际上是要满足分区容忍性,所以可用性和一致性不可能同时得到满足。如何调和因读写分离带来的可用性和一致性矛盾,也是分布式架构设计必须解决的问题。        4.运维复杂度。分布式架构下,采用大量的X86服务器来实现主机或小型机才有的处理能力和高可用性,使得系统的服务器数量急剧膨胀,应用结构和关联关系更为复杂,给运维工作带来巨大挑战。解决方案        分布式架构的核心在于“分”,难点在于“既要能分,也要能合”。下面是分布式架构中几个关键技术方案的设计要点。        图1 分库分表概念模型        1.分库分表策略。常见的分库分表策略包括垂直切分和水平切分。垂直切分是指从业务分析入手,将系统按照不同的业务功能,划分为一些相对独立的子系统或模块。水平切分是指按照一定的逻辑,将数据表按照分区键值进行切分,实现数据的分布式存储。        多数场景下都需要将垂直切分和水平切分联合使用,先对数据进行垂直切分,再针对场景下数据访问特征选择性地进行水平切分(如图1所示)。        2.数据分布算法。可以使用SBF数据分布模型解决分库分表的问题(即Shar d i n g K e y分区键-DataBucket数据桶-TableFamily表族)。其核心思想是应用数据逻辑态与物理态的隔离,从请求数据识别出分区键,然后应用算法确定数据桶的编号,相同编号的数据桶形成一个表族。最后将数据桶映射为物理数据库的表,然后根据数据库的数量,将所有的表族均匀分布到各物理数据库中。        采用一致性“哈希算法”来分库分表,其核心是将要分布的数据经过计算映射到一个具有0~(232-1)的数据空间中,形成一个闭合的环形。然后将物理节点也通过“哈希算法”映射到这个环上,以顺时针方向将所有的对象存储到离自己最近的物理节点上(见图2)。图2 使用SBF 数据分布模型解决分库分表问题        将该算法应用于核心业务系统的数据库分库分表场景下,最重要的就是让应用的数据访问模型与算法特征、数据库特征和数据库物理部署相结合,充分发挥一致性“哈希算法”的优势。        3.数据访问路由。数据访问路由模块的功能是将数据分布算法嵌入到交易流程中,使应用能够透明地访问对应的数据库分库和分表(如图3所示)。图3 数据访问路由模块的功能设计        首先,需要在请求接入时确定应用的分区键,输入是服务的请求数据,然后根据应用场景的不同嵌入分区键的识别逻辑,实现分区键的转换功能。转换后的分区键和计算的桶编号需要写入本交易的内存区,用于后续的分库分表处理。        其次,采用统一的应用访问数据库接口实现数据库访问层,在数据库访问层嵌入数据访问路由逻辑。核心功能包括SQL的解析和重写、多数据源管理、单库数据访问接口等,通过几个模块的协作就可以完成数据访问路由的决策、分发和执行。        4.数据重分布。数据重分布是分库分表后的基本能力要求。重分布过程应该以最大程度地保证应用可用性为前提,避免因为重分布导致全量数据的重组。从服务视角来看,每一次的服务调用,都是针对单一的数据记录进行操作,数据表中存储的也是数据记录。基于关系型数据库进行数据重分布,最好的方式并不是通过记录,而是通过表。将重分布的颗粒度定义到表级别,可以利用数据库的导入导出工具,大大提高数据重分布的效率,降低对系统可用性的影响。        5.数据聚合。跨库查询是分库分表模式下最为典型的应用场景,解决的思路是将查询下发到所有的数据库执行,然后再对结果集进行合并和筛选。方案主要包括并行执行调度、多分区键识别和重组、线程池管理、多数据源管理和数据访问接口、SQL解析和执行计划优化、结果集合并筛选等几个模块。        6.数据共享和访问性能优化。对于读多写少的公共数据,可采用分布式缓存技术实现数据共享,优化访问性能。        但应用缓存也有一个问题,即缓存的数据都存储在内存中,如果出现服务器宕机和进程异常退出的情况,极有可能造成数据丢失。在应用时应该遵循以下几条原则:一是应用缓存的交易必须具有大并发量的特性,放在缓存的数据应当满足只读且使用频繁的条件;二是由于银行业务对可用性的要求,在使用缓存时要在设计时做到应用的高可用,一旦缓存出现问题,应用要能够无缝切换;三是将缓存组件整合到数据访问层,避免对整体业务逻辑的影响。        7.读写分离。数据存在多个副本,包括一个主数据库和多个从数据库。主库负责数据更新和实时数据查询,从库负责历史和准实时的数据查询。分布式架构设计时,可从下面几个层级实现读写分离机制。        组件级:从服务的维度将历史查询和准实时查询从核心应用的主库中隔离出来,在企业级服务总线(ESB)实现组件和交易级的服务路由选择,从而在组件级实现读写分离的要求。        联机服务级:当交易请求通过ESB到核心业务系统后,在请求接入层进行数据访问路由选择,实现交易服务数据访问的读写分离。        数据访问层级:在数据访问层中实现对于SQL语句的解析和识别,如果是可以访问读库的查询功能,则可通过多数据源管理模块路由到读库访问,降低主库的处理压力。        8.可用性保证机制。应用分库分表后,在大幅提升系统处理性能的同时,规避了大型单一集中式数据库的运行风险。可以采取以下几个可用性保证机制。        故障隔离机制:通过“SBF”数据分布模型,准确地识别数据桶编号与物理数据库的对应关系,快速地通过改变物理数据库可用性的标识,实现故障隔离。        集群架构:每个分库仍然应该保持集群架构,利用关系型数据库管理系统的高可用机制进一步提升分库的可用性水平。        数据库的灾备:可以部署灾备数据库,保证极端情况下数据库层的可用性。        9.高效运维。建立分布式架构下的高效运维体系,在资源供给、应用部署、集中监控、故障诊断和应急处置等方面提升自动化水平,是确保分布式架构能够应用和推广的必要条件。 一是通过云平台封装标准PaaS云服务,可实现多套数据库、中间件服务的快速供给及动态伸缩,还可根据主备库配置关系,实现日常检查、一键式切换、服务启停、数据迁移、软件分发、配置管理等自动化操作。二是通过集中监控系统实现从基础设施到应用的全面事件和性能监控,采用规则引擎、可视化引擎、工作流引擎实现事件智能化分析、展现、处置及信息推送,为分布式架构下的快速故障定位、故障自愈和应急处置提供有力的保障。三是通过应用监控系统可度量组件间可用性、性能、流量等指标数据,从而实现端到端交易监控,并实时展现各组件的交易性能、组件间调用关系、追踪单笔交易路径。四是通过大数据技术实时分析系统、数据库、中间件等基础服务和应用服务的性能、容量,动态调整资源,提高资源利用率。分布式架构转型路径        按照整体规划、分步实施、风险可控的策略,推进系统从集中式架构向分布式架构转型。        1.整体架构设计。“新一代”架构的基本特征是企业级、组件化和面向服务,在架构分层的基础上,建设12个应用平台,承接业务架构建模成果,将115个业务组件所对应的应用组件部署在平台上,组件之间通过标准化的服务和事件驱动架构(EDA)进行交互。可以说,应用的解耦为分布式架构的采用提供了极大便利,分布式处理是“新一代”架构所具备的重要能力之一。        2.合理选用平台架构。根据整体架构设计,我们将115个应用组件绝大多数在开放平台上部署,只保留极少的关键核心应用(如存贷款、借记卡、贷记卡等)在主机平台上。        一是对于客户积分管理这类应用,将其全部功能部署在分布式架构平台上。二是对于客户信息这类查询交易为主的应用,将客户信息的维护操作保留在主机上,将客户信息查询下移到分布式架构平台上。三是对于对私存款与借记卡这类应用,其交易量大,数据一致性要求高,目前还很难将其全部迁移到分布式架构平台。基于读写分离的原则,将涉及客户合约、账户、介质维护类的交易保留在主机平台上;将对合约、账户、介质、以及交易明细的查询交易部署到分布式架构平台。主机和分布式平台之间的数据采用日终批量或准实时方式同步。        在组件化、SOA架构特点下,组件之间的服务调用不可避免,因主机技术特点限制,其外呼能力较弱,将此类需要组合主机上存款借记卡服务和开放平台服务的组合场景部署到分布式架构平台,通过交易一致性事中和事后机制保证业务一致性。        3.分布式架构平台研发与应用。如本文所述,将分布式处理的一些关键技术应用在基于X86的分布式架构平台研发上,使其具备高并发、高可用、可扩展的能力。建设银行基于分布式架构的应用已经成功开发和投产,以客户积分管理应用为例,“新一代”3.2期投产后,积分管理的客户数超过6000万,账户数9000万,经过分库分表处理后,数据分布到1024套表中,每套表约存储12万左右的账户记录和相关明细数据,联机日均交易量约为1300万笔,峰值TPS约750,交易平均处理时间约60ms。        4.持续推进分布式架构平台应用。分布式平台的应用显著提升了IT自主可控研发能力,降低了IT成本,下一步将从四个方面深化其应用:一是尝试将贷记卡这类核心应用整体迁移到开放分布式平台;二是推进主机上存款、借记卡、客户信息这类核心应用功能继续向开放分布式平台迁移;三是将一些具有“秒杀”交易特征、突发交易量大的基于小型机的集中式处理系统向x86分布式平台迁移;四是完善分布式架构灾备方案,实现分布式架构平台多活。结语        实践证明,商业银行通过自主设计、自主研发的方式实现分布式技术的应用是可行的。银行引入分布式技术,应对互联网行业竞争,应发挥在网络资源、经营对象、信息安全及线下服务的优势,坚持以自身为主做“银行+互联网”、以开放的态度谋求合作性竞争、以“客户体验至上”为宗旨设计产品提供服务、以积极稳妥的态度推进分布式架构的建设,不断提升银行IT的管理和技术水平。来源:https://blog.csdn.net/sandy_hmily/article/details/81198928
 1    0  7天前
hupei
68
集群概念介绍集群术语须知服务硬件:指提供计算服务的硬件,比如 PC 机、PC 服务器。服务实体:服务实体通常指服务软体和服务硬体。节点(node):运行 Heartbeat 进程的一个独立主机称为节点,节点是 HA 的核心组成部分,每个节点上运行着操作系统和Heartbeat 软件服务。资源(resource):资源是一个节点可以控制的实体,当节点发生故障时,这些资源能够被其他节点接管。如: 磁盘分区、文件系统、IP 地址、应用程序服务、共享存储事件(event):事件也就是集群中可能发生的事情,例如节点系统故障、网络连通故障、网卡故障和应用程序故障等。这些事件都会导致节点的资源发生转移,HA 的测试也是基于这些事件进行的。什么是集群集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源,这些单个的计算机系统就是集群的节点(node)。集群提供了以下关键的特性。(一) 可扩展性。集群的性能不限于单一的服务实体,新的服务实体可以动态的加入到集群,从而增强集群的性能。(二) 高可用性。集群通过服务实体冗余使客户端免于轻易遭遇到“out of service”警告。当一台节点服务器发生故障的时候,这台服务器上所运行的应用程序将在另一节点服务器上被自动接管。消除单点故障对于增强数据可用性、可达性和可靠性是非常重要的。(三) 负载均衡。负载均衡能把任务比较均匀的分布到集群环境下的计算和网络资源,以便提高数据吞吐量。(四) 错误恢复。如果集群中的某一台服务器由于故障或者维护需要而无法使用,资源和应用程序将转移到可用的集群节点上。这种由于某个节点中的资源不能工作,另一个可用节点中的资源能够透明的接管并继续完成任务的过程叫做错误恢复。分布式与集群的联系与区别如下:(一) 分布式是指将不同的业务分布在不同的地方。(二) 而集群指的是将几台服务器集中在一起,实现同一业务。(三) 分布式的每一个节点,都可以做集群,而集群并不一定就是分布式的。而分布式,从狭义上理解,也与集群差不多,但是它的组织比较松散,不像集群,有一定组织性,一台服务器宕了,其他的服务器可以顶上来。分布式的每一个节点,都完成不同的业务,一个节点宕了,这个业务就不可访问了。集群主要分成三大类:HA:高可用集群(High Availability Cluster)。LBC:负载均衡集群/负载均衡系统(Load Balance Cluster)HPC:科学计算集群(High Performance Computing Cluster)/高性能计算(High Performance Computing)集群。为什么搭建数据库集群随着经济的高速发展,企业规模的迅猛扩张,企业用户的数量、数据量的爆炸式增长,对数据库提出了严峻的考验。对于所有的数据库而言,除了记录正确的处理结果之外,还面临着以下几方面的挑战。l  如何提高处理速度,实现数据库的均衡负载。l  如何保证数据库的可用性、数据安全性、以及如何实现数据集群可扩性。l  怎么综合解决这些问题成为众多企业关注的焦点。在数据库上,组建集群也是同样的道理,主要有以下几个原因:(一) 伴随着企业的成长,业务量提高,数据库的访问量和数据量快速增长,其处理能力和计算速度也相应增大,使得单一的设备根本无法承担。(二) 在以上情况下,若扔掉现有设备,做大量的硬件升级,势必造成现有资源的浪费,而且下一次业务量提升时,又将面临再一次硬件升级的高额投入。于是,人们希望通过几个中小型服务器组建集群,实现数据库的负载均衡及持续扩展;在需要更高数据库处理速度时,只要简单的增加数据库服务器就可以得到扩展。(三) 数据库作为信息系统的核心,起着非常重要的作用,单一设备根本无法保证系统的下持续运行,若发生系统故障,将严重影响系统的正常运行,甚至带来巨大的经济损失。于是,人们希望通过组建数据库集群,实现数据库的高可用,当某节点发生故障时,系统会自动检测并转移故障节点的应用,保证数据库的持续工作。(四) 企业的数据库保存着企业的重要信息,一些核心数据甚至关系着企业的命脉,单一设备根本无法保证数据库的安全性,一旦发生丢失,很难再找回来。于是,人们希望通过组建数据库集群,实现数据集的冗余,通过备份数据来保证安全性。数据库集群的分类数据库集群技术是将多台服务器联合起来组成集群来实现综合性能优于单个大型服务器的技术,这种技术不但能满足应用的需要,而且大幅度的节约了投资成本。数据库集群技术分属两类体系:基于数据库引擎的集群技术和基于数据库网关(中间件)的集群技术。在数据库集群产品方面,其中主要包括基于数据库引擎的集群技术的 Oracle RAC、Microsoft MSCS、IBM DB2UDB、Sybase ASE,以及基于数据库网关(中间件)的集群技术的 ICX-UDS 等产品。一般来讲,数据库集群软件侧重的方向和试图解决的问题划分为三大类:l  负载均衡集群(Load Balance Cluster,LBC)侧重于数据库的横向扩展,提升数据库的性能。l  高可用性集群(High Availability Cluster,HAC)侧重保证数据库应用持续不断。大部分的数据库集群侧重与此。l  高安全性集群(High Security Cluster,HSC)侧重于容灾。只有 Oracle RAC 能实现以上三方面可扩展的分布式数据库架构(一) Oracle RAC:其架构的最大特点是共享存储架构(Shared-storage),整个 RAC 集群是建立在一个共享的存储设备之上的,节点之间采用高速网络互联。OracleRAC 提供了非常好的高可用特性,比如负载均衡和应用透明切块(TAF),其最大的优势在于对应用完全透明,应用无需修改便可切换到RAC 集群。但是RAC 的可扩展能力有限,首先因为整个集群都依赖于底层的共享存储,所以共享存储的 I/O 能力和可用性决定了整个集群的可以提供的能力,对于 I/O 密集型的应用,这样的机制决定后续扩容只能是 Scale up(向上扩展)类型,对于硬件成本、开发人员的要求、维护成本都相对比较高。Oracle显然也意识到了这个问题,在 Oracle 的 MAA(Maximum Availability Architecture)架构中,采用 ASM 来整合多个存储设备的能力,使得 RAC 底层的共享存储设备具备线性扩展的能力,整个集群不再依赖于大型存储的处理能力和可用性。RAC 的另外一个问题是,随着节点数的不断增加,节点间通信的成本也会随之增加,当到某个限度时,增加节点可能不会再带来性能上的提高,甚至可能造成性能下降。这个问题的主要原因是 Oracle RAC 对应用透明,应用可以连接集群中的任意节点进行处理,当不同节点上的应用争用资源时,RAC 节点间的通信开销会严重影响集群的处理能力。所以对于使用 ORACLE RAC 有以下两个建议:l  节点间通信使用高速互联网络;l  尽可能将不同的应用分布在不同的节点上。基于这个原因,Oracle RAC 通常在 DSS 环境(决策支持系统Decision Support System ,简称DSS)中可以做到很好的扩展性,因为 DSS 环境很容易将不同的任务分布在不同计算节点上,而对于 OLTP 应用(On-Line Transaction Processing联机事务处理系统),Oracle RAC 更多情况下用来提高可用性,而不是为了提高扩展性。(二) MySQL ClusterMySQL cluster 和 Oracle RAC 完全不同,它采用 无共享架构Shared nothing(shared nothing architecture)。整个集群由管理节点(ndb_mgmd),处理节点(mysqld)和存储节点(ndbd)组 成,不存在一个共享的存储设备。MySQL cluster 主要利用了 NDB 存储引擎来实现,NDB 存储引擎是一个内存式存储引擎,要求数据必须全部加载到内存之中。数据被自动分布在集群中的不同存 储节点上,每个存储节点只保存完整数据的一个分片(fragment)。同时,用户可以设置同一份数据保存在多个不同的存储节点上,以保证单点故障不会造 成数据丢失。MySQL cluster 主要由 3 各部分组成:l  SQL 服务器节点l  NDB 数据存储节点l  监控和管理节点这样的分层也是与 MySQL 本身把 SQL 处理和存储分开的架构相关系的。MySQL cluster 的优点在于其是一个分布式的数据库集群,处理节点和存储节点都可以线性增加,整个集群没有单点故障,可用性和扩展性都可以做到很高,更适合 OLTP 应用。但是它的问题在于:l   NDB(“NDB” 是一种“内存中”的存储引擎,它具有可用性高和数据一致性好的特点。) 存储引擎必须要求数据全部加载到内存之中,限制比较大,但是目前 NDB 新版本对此做了改进,允许只在内存中加 载索引数据,数据可以保存在磁盘上。l  目前的 MySQL cluster 的性能还不理想,因为数据是按照主键 hash 分布到不同的存储节点上,如果应用不是通过主键去获取数据的话,必须在所有的存储节点上扫描, 返回结果到处理节点上去处理。而且,写操作需要同时写多份数据到不同的存储节点上,对节点间的网络要求很高。虽然 MySQL cluster 目前性能还不理想,但是 share nothing 的架构一定是未来的趋势,Oracle 接手 MySQL之后,也在大力发展 MySQL cluster,我对 MySQL cluster 的前景抱有很大的期待。(三) 分布式数据库架构MySQL 5 之后才有了数据表分区功能(Sharding), Sharding 不是一个某个特定数据库软件附属的功能,而是在具体技术细节之上的抽象处理,是水平扩展(Scale Out,亦或横向扩展、向外扩展)的解决方案,其主要目的是为突破单节点数据库服务器的 I/O 能力限制,解决数据库扩展性问题。比如 Oracle 的 RAC 是采用共享存储机制,对于 I/O 密集型的应用,瓶颈很容易落在存储上,这样的机制决定后续扩容只能是 Scale Up(向上扩展) 类型,对于硬件成本、开发人员的要求、维护成本都相对比较高。Sharding 基本上是针对开源数据库的扩展性解决方案,很少有听说商业数据库进行 Sharding 的。目前业界的趋势基本上是拥抱 Scale Out,逐渐从 Scale Up 中解放出来。Sharding 架构的优势在于,集群扩展能力很强,几乎可以做到线性扩展,而且整个集群的可用性也很高,部分节点故障,不会影响其他节点提供服务。Sharding 原理简单,容易实现,是一种非常好的解决数据库扩展性的方案。Sharding 并不是数据库扩展方案的银弹,也有其不适合的场景,比如处理事务型的应用它可能会造成应用架构复杂或者限制系统的功能,这也是它的缺陷所在。读写分离是架构分布式系统的一个重要思想。不少系统整体处理能力并不能同业务的增长保持同步,因此势必会带来瓶颈,单纯的升级硬件并不能一劳永逸。针对业务类型特点,需要从架构模式进行一系列的调整,比如业务模块的分割,数据库的拆分等等。集中式和分布式是两个对立的模式,不同行业的应用特点也决定了架构的思路。如互联网行业中一些门户站点,出于技术和成本等方面考虑,更多的采用开源的数据库产品(如 MYSQL),由于大部分是典型的读多写少的请求,因此为 MYSQL 及其复制技术大行其道提供了条件。而相对一些传统密集交易型的行业,比如电信业、金融业等,考虑到单点处理能力和可靠性、稳定性等问题,可能更多的采用商用数据库,比如 DB2、Oracle 等。就数据库层面来讲,大部分传统行业核心库采用集中式的架构思路,采用高配的小型机做主机载体,因为数据库本身和主机强大的处理能力,数据库端一般能支撑业务的运转,因此,Oracle 读写分离式的架构相对MYSQL 来讲,相对会少。读写分离架构利用了数据库的复制技术,将读和 写分布在不同的处理节点上,从而达到提高可用性和扩展性的目的。最通常的做法是利用 MySQL Replication 技术,Master DB 承担写操作,将数据变化复制到多台 Slave DB上,并承担读的操作。这种架构适合 read-intensive 类型的应用,通过增加 Slave DB 的数量,读的性能可以线性增长。为了避免 Master DB 的单点故障,集群一般都会采用两台 Master DB 做双机热备,所以整个集群的读和写的可用性都非常高。除了 MySQL,Oracle 从 11g 开始提供 Active Standby 的功能,也具备了实现读写分离架构的基础。读写分离架构的缺陷在于,不管是 Master 还是 Slave,每个节点都必须保存完整的数据,如 果在数据量很大的情况下,集群的扩展能力还是受限于单个节点的存储能力,而且对于 Write-intensive 类型的应用,读写分离架构并不适合。采用 Oracle 读写分离的思路,Writer DB 和 Reader DB 采用日志复制软件实现实时同步; Writer DB 负责交易相关的实时查询和事务处理,Reader DB 负责只读接入,处理一些非实时的交易明细,报表类的汇总查询等。同时,为了满足高可用性和扩展性等要求,对读写端适当做外延,比如 Writer DB 采用 HA 或者 RAC 的架构模式,目前,除了数据库厂商的 集群产品以外,解决数据库扩展能力的方法主要有两个:数据分片和读写分离。数据分片(Sharding)的原理就是将数据做水平切分,类似于 hash 分区 的原理,通过应用架构解决访问路由和Reader DB 可以采用多套,通过负载均衡或者业务分离的方式,有效分担读库的压力。对于 Shared-nothing 的数据库架构模式,核心的一个问题就是读写库的实时同步;另外,虽然 Reader DB只负责业务查询,但并不代表数据库在功能上是只读的。只读是从应用角度出发,为了保证数据一致和冲突考虑,因为查询业务模块可能需要涉及一些中间处理,如果需要在数据库里面处理(取决与应用需求和设计),所以Reader DB 在功能上仍然需要可写。下面谈一下数据同步的技术选型问题:能实现数据实时同步的技术很多,基于 OS 层(例如 VERITAS VVR),基于存储复制(中高端存储大多都支持),基于应用分发或者基于数据库层的技术。因为数据同步可能并不是单一的 DB 整库同步,会涉及到业务数据选择以及多源整合等问题,因此 OS 复制和存储复制多数情况并不适合做读写分离的技术首选。基于日志的 Oracle 复制技术,Oracle 自身组件可以实现,同时也有成熟的商业软件。选商业的独立产品还是 Oracle 自身的组件功能,这取决于多方面的因素。比如团队的相应技术运维能力、项目投入成本、业务系统的负载程度等。采用 Oracle 自身组件功能,无外乎 Logical Standby、Stream 以及 11g 的 Physical Standby(Active Data Guard),对比来说,Stream 最灵活,但最不稳定,11g Physical Standby 支持恢复与只读并行,但由于并不是日志的逻辑应用机制,在读写分离的场景中最为局限。如果技术团队对相关技术掌握足够充分,而选型方案的处理能力又能支撑数据同步的要求,采用 Oracle 自身的组件完全可行。选择商业化的产品,更多出于稳定性、处理能力等考虑。市面上成熟的 Oracle 复制软件也无外乎几种,无论是老牌的 Shareplex,还是本土 DSG 公司的 RealSync 和九桥公司的 DDS,或是 Oracle 新贵 Goldengate,都是可供选择的目标。随着 GoldenGate 被 Oracle 收购和推广,个人认为 GoldenGate 在容灾、数据分发和同步方面将大行其道。当然,架构好一个可靠的分布式读写分离的系统,还需要应用上做大量设计,不在本文讨论范围内。(四)  CAP 和 BASE 理论分布式领域 CAP 理论:l  Consistency(一致性), 数据一致更新,所有数据变动都是同步的l  Availability(可用性), 好的响应性能l  Partition tolerance(分区容错性) 可靠性定理:任何分布式系统只可同时满足二点,没法三者兼顾。忠告:架构师不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍。关系数据库的 ACID 模型拥有 高一致性 + 可用性 很难进行分区:l  Atomicity 原子性:一个事务中所有操作都必须全部完成,要么全部不完成。l  Consistency 一致性. 在事务开始或结束时,数据库应该在一致状态。l  Isolation 隔离层. 事务将假定只有它自己在操作数据库,彼此不知晓。l  Durability. 一旦事务完成,就不能返回。(五)  跨数据库事务2PC (two-phase commit), 2PC is the anti-scalability pattern (Pat Helland) 是反可伸缩模式的,也就是说传统关系型数据库要想实现一个分布式数据库集群非常困难,关系型数据库的扩展能力十分有限。而近年来不断发展壮大的 NoSQL(非关系型的数据库)运动,就是通过牺牲强一致性,采用 BASE 模型,用最终一致性的思想来设计分布式系统,从而使得系统可以达到很高的可用性和扩展性。那么,有没有可能实现一套分布式数据库集群,既保证可用性和一致性,又可以提供很好的扩展能力呢?BASE 思想的主要实现有按功能划分数据库 sharding 碎片BASE 思想主要强调基本的可用性,如果你需要 High 可用性,也就是纯粹的高性能,那么就要以一致性或容错性为牺牲,BASE 思想的方案在性能上还是有潜力可挖的。l  共同点:都是关系数据库 SQL 以外的可选方案,逻辑随着数据分布,任何模型都可以自己持久化,将数据处理和数据存储分离,将读和写分离,存储可以是异步或同步,取决于对一致性的要求程度。l  不同点:NOSQL 之类的 Key-Value 存储产品是和关系数据库头碰头的产品 BOX,可以适合非 Java 如 PHP RUBY等领域,是一种可以拿来就用的产品,而领域模型 + 分布式缓存 + 存储是一种复杂的架构解决方案,不是产品,但这种方式更灵活,更应该是架构师必须掌握的。目前,已经有很多分布式数据库的产品,但是绝大部分是面向 DSS 类型的应用,因为相比较 OLTP 应用,DSS 应用更容易做到分布式扩展,比如基于 PostgreSQL 发展的 Greenplum,就很好的解决了可用性和扩展性的问题,并且提供了很强大的并行计算能力。对于 OLTP 应用,业务特点决定其要求:高可用性,一致性, 响应时间短,支持事务和 join 等等。数据库和 NoSQL当越来越多的 NoSQL 产品涌现出来,它们具备很多关系型数据库所不具备的特性,在可用性和扩展性方面都可以做到很好。第一,NoSQL 的应用场景非常局限,某个类型的 NoSQL 仅仅针对特定类型的应用场景而设计。而关系型数据库则要通用的多,使用 NoSQL 必须搞清楚自己的应用场景是否适合。第二,利用关系型数据库配合应用架构, 比如 Sharding 和读写分离技术,同样可以搭建出具备高可用和扩展性的分布式数据库集群。第三,关系型数据库厂商依然很强大,全世界有大量的 用户,需求必然会推动新的产品问世。第四,硬件的发展日新月异,比如闪存的技术的不断成熟,未来闪存可以作为磁盘与内存之间的 cache,或者完 全替代磁盘。而内存价格越来越低,容量越来越大,In-memory cache 或 database 的应用越来越广泛,可以给应用带来数量级的性能提升。数据库面临的 IO 问题将被极大改善。全文地址来源:https://blog.csdn.net/sandy_hmily/article/details/77847542?utm_source=copy
 0    0  7天前
hupei
63
很多时候比如编程查看代码或者打开各种文档下我们都会用到文本编辑器,Windows自带的记事本功能很简陋并且打开大文件很慢,因此很多童鞋都会有自己喜欢的一款文本编辑器。在这里,西西挑选前15个最佳的文本编辑器,这些编辑器实际上主要适合程序员!如果觉得这些文本编辑器足够您的使用,欢迎点赞,如果还有更好的,可以给我们推荐哦。1. Notepad++中文版:这是 Windows 记事本一个最好的替换产品,优于Windows记事本的一个文本编辑器,完全免费且开源,对于不同的编程语言可以实现语法高亮,代码折叠以及宏,起可定制性非常强。主要特点包括: 开源代码编辑器(Notepad++) v6.9.2 中文免费版 评分:8.6类别: 文本编辑    大小:3.9M    语言: 中文 查看详细信息 >> a. 自动完成b. 语法高亮c. 拖放特性d. 搜索e. 缩放2. PSPad 编辑器:PSPad 是一个Windows平台上免费的适合程序员使用的编辑器。它可以让你保持上一次编辑状态,这样在你下次打开编辑器的时候可以直接显示原来的文件。此外它还支持通过FTP进行远程编辑,支持多文件的比较等。 PSPad editor编辑器 5.0.0(243)绿色中文特别版 评分:6.0类别: 文本编辑    大小:5.8M    语言: 多国语言[中文] 查看详细信息 >> a. 语法高亮b. 支持多文档编辑c. 内建 FTP 客户端d. 完整的十六进制编辑器e. 桌面会话保存3. Emacs (所有平台)Emacs文本编辑器深受高级程序员的喜爱,具有内置的宏功能以及强大的键盘命令,这对于编辑代码来说真是一种享受,这个程序几乎被移植到了每一个平台,并有多个发行版,其中最流行的是GNU Emacs和XEmacs,它们是跨平台、完全免费并且开源。4. Sublime Text3(Windows)Sublime Text3支持但不限于 C, C++, C#, CSS, D, Erlang, HTML, Groovy, Haskell, HTML, Java, JavaScript, LaTeX, Lisp, Lua, Markdown, Matlab, OCaml, Perl, PHP, Python, R, Ruby, SQL, TCL, Textile and XML 等主流编程语言的语法高亮。ST 拥有优秀的代码自动完成功能 (自动补齐括号,大括号等配对符号;自动补全已经出现的单词;自动补全函数名),非常智能; 神级代码编辑软件(Sublime Text 3) V3.3143汉化特别版 评分:5.1类别: 文本编辑    大小:28.4M    语言: 中文 查看详细信息 >> 5. Vim:Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。 VIM文本编辑器 7.4 官方中文安装版 评分:1.9类别: 文件处理    大小:6.4M    语言: 多国语言[中文] 查看详细信息 >> 6. TextMate:Mac 平台下一款强大的文本编辑器,主要特性:a. 代码自动完成b. 可直接在文档中运行 SHELL 命令c. 支持多种风格d. 支持宏e. 目前已提供 Windows 版本7. EditPlus:这是我喜欢的文本编辑器,特点:a. 语法着色b. 多语言支持c. 内建文件浏览器d. 自动完成e. 拼写检查 EditPlus编辑器 V4.10.946 烈火汉化绿色版 评分:4.4类别: 文本编辑    大小:4.0M    语言: 中文 查看详细信息 >> 8. Gedit:这是 Linux 下的一个纯文本编辑器,但你也可以把它用来当成是一个集成开发环境 (IDE), 它会根据不同的语言高亮显现关键字和标识符。9. Notepad2:Notepad2是一个相当优秀的轻量级文本编辑器,开源软件,具有很多特色功能,如代码高亮、编码转换、行号显示、多步Ctrl+Z等,是不可多得的记事本替代方案。而 Notepad2-mod 是 Notepad2 的修改版、更新很及时,支持代码折叠、NSIS、Inno、AHK语法高亮等。 Notepad2中文版 V4.2.25.995 中文绿色版 评分:7.8类别: 文本编辑    大小:1.5M    语言: 中文 查看详细信息 >> 1、自定义语法高亮,支持HTML, XML, CSS, JavaScript, VBScript, ASP, PHP, CSS, Perl/CGI,C/C++, C#, Java, VB, Pascal, 汇编, SQL, Python, NSIS,INI, REG, INF, BAT,DIFF等众多脚本文件。2、支持ANSI,Unicode,UTF-8等编码互换3、可以设置无限个书签(9种图标可换)轻松定位10. UltraEdit:这个工具大家都非常熟悉,不再废话。 UltraEdit-32中文版 v24.10.0.32中文特别增强版 评分:7.9类别: 文本编辑    大小:47M    语言: 中文 查看详细信息 >> 11. TextPad:一款常用的文本编辑器,主要特性:a. 多语言拼写检查b. 自动文本完成c. 宏录制d. 搜索工具条 TextPad编辑器 v7.0.9 特别版 评分:5.0类别: 文本编辑    大小:4.5M    语言: 英文 查看详细信息 >> 12. NoteTab:便携式 HTML 编辑器,支持 Windows,特性:a. 搜索和替换b. Tabbed 接口c. HTML文档格式化d. 高便携,可在 U盘中运行e. 快速可靠13. AkelPad:akelpad 是一款快捷免费且文件小巧的文本编辑软件。具有单窗口单页面和单窗口多页面两种模式,可编辑超过64k限制的文件。支持unicode 字符。支持系统已安装的任意代码页。支持dos/windows 和unix 换行格式。可预览打开的文件,多次撤消,记忆搜索替换设置,支持插件等功能。是一款不错的“记事本”替代工具。 AkelPad(文本编辑器) V4.9.7 中文安装版(x86+x64) 评分:10.0类别: 文本编辑    大小:2.3M    语言: 多国语言[中文] 查看详细信息 >> 14. Nvu:NVU实际上起源于Netscape,还记得那个有点笨拙的HTML编辑器Netscape Composer吗?NVU就是在它的基础上进一步开发出来的,不过,最新版本的NVU已经不是当年的那只丑小鸭,它完全能够胜任专业网页设计工作的需 求。与FrontPage和Dreamweaver这类商业HTML编辑器一样,这款软件(目前支持Windows、Linux和Mac OS平台)同时提供了源代码直接编辑和“所见即所得”这两种网页设计环境。NVU严格遵循W3C联盟的标准,其生成的HTML代码也相当紧凑,它会帮你排除错误或冗余的代码。这款编辑器提供了拼写和语 法检查功能,并且允许你采用不同的主题方案对界面进行定制。你可以自行创建并保存模版,还可以利用内置的FTP客户端把页面迅速上传到Web服务器上。15. E-TextEditor:Windows 下的编辑器,具有以下特性:a. 键盘快捷键b. 自动化以提升性能c. 多语言支持d. 修订版本控制e. 个性化定制
 0    0  7天前
hupei
152
刚装好mysql时,使用正常,后来再次使用时,连接不成功。(虚拟机中) 配置网络有问题, 1、我将ifcfg-*的两个文件备份后删除了。 2、点击右下角的小电脑,重新新建一个网络连接。把网络接入主机的网络,配置虚拟机的ip,掩码和网关。参考(详见文末):https://zhidao.baidu.com/question/570666708.html 3、重启一下网络:systemctl restart network;重启一下mysql:systemctl restart mysqld 4、再连接就成功了。 5、查看mysql 版本:(控制台直接输入指令)mysql -V 注意:子网掩码和网关一定要和局域网中的一样,局域网电脑才能连接到虚拟机的mysql   虚拟机加入到局域网: 1、打开虚拟机的设置,我们在里面修改网络的连接方式。 2、网络连接:选择“桥接模式”直接连接物理网络 3、打开“编辑”下的虚拟网络编辑器 4、如果之前有进行过网络修改设置,但是没有成功的。需要先进行还原默认设置。选择第一项“桥接”,连接选择自动。 5、关闭服务器的防火墙,本地测试不需要开防火墙 6、网络连通测试:通过“ipconfig”命令查看虚拟机IP是否和主机在同一IP段,通过“ping”测试网络。 标签https://www.cnblogs.com/warmlight/p/11640168.html
 12    0  34天前
hupei
120
中标麒麟系统安装rpm文件 打开终端,获得su权限。 cd到rpm所在文件夹,输入指令,rpm -ivh rpm的名称
 0    0  34天前
hupei
125
最近碰到客户反馈一个问题,系统hang了,ssh登录不上,但是可以ping通,通过串口登录进去之后,敲有些命令会卡住,查看cpu负载内存都很正常,手动触发kdump之后看不出死锁/softlockup/hardlockup等异常状态.而且重要的是已经影响到客户几十亿的业务了。我能拿到的只有客户提供的vmcore,为了生活而奔波的人儿赶紧分析起来:系统(SUSE 11SP1)#crash  ./vmcore ./vmlinux-2.6.32.59-0.19-default ./vmlinux-2.6.32.59-0.19-default.gz crash>foreach IN bt > inbt任意找到一个IN(可中断睡眠)的进程 12813 查看堆栈:crash> bt 12813PID:12813  TASK: ffff880262eda140  CPU: 8  COMMAND: "sshd" #0 [ffff880f98e1ba58] schedule atffffffff8139d2a4 #1 [ffff880f98e1bb10] schedule_timeout atffffffff8139d935 #2 [ffff880f98e1bba0] unix_wait_for_peer atffffffff81376e27 #3 [ffff880f98e1bc00] unix_dgram_sendmsg atffffffff813785c2 #4 [ffff880f98e1bcb0] sock_sendmsg atffffffff812e8ddc #5 [ffff880f98e1be50] sys_sendto atffffffff812e9318 #6 [ffff880f98e1bf80] system_call_fastpath atffffffff81002f7b 汇编unix_dgram_sendmsg()crash>dis unix_dgram_sendmsg...2410xffffffff813785b7 <unix_dgram_sendmsg+1143>:   mov   %r13,%rsi2420xffffffff813785ba <unix_dgram_sendmsg+1146>: mov %rbp,%rdi (key1) rdi代表unix_wait_for_peer函数的第一个参数2430xffffffff813785bd <unix_dgram_sendmsg+1149>:   callq 0xffffffff81376da0 <unix_wait_for_peer> 进程12813 unix_wait_for_peer() 函数的堆栈数据:crash>rd -SS ffff880f98e1bba0 -e ffff880f98e1bc00ffff880f98e1bba0:  unix_wait_for_peer+135 0000000000000001ffff880f98e1bbb0:  [ffff880262eda140:task_struct]autoremove_wake_functionffff880f98e1bbc0:  ffff88021ea8bbc0 ffff880238315bc0ffff880f98e1bbd0:  memcpy_fromiovec+87 [ffff880238514980:UNIX]ffff880f98e1bbe0:  [ffff880238514c30:UNIX] [ffff880238514980:UNIX]ffff880f98e1bbf0: [ffff880ff708b630:UNIX] 7fffffffffffffff 汇编unix_wait_for_peer()crash>dis unix_wait_for_peer0xffffffff81376da0<unix_wait_for_peer>:       sub    $0x58,%rsp0xffffffff81376da4<unix_wait_for_peer+4>:     mov    $0x1,%edx0xffffffff81376da9<unix_wait_for_peer+9>:     mov    %r13,0x50(%rsp)0xffffffff81376dae<unix_wait_for_peer+14>:    lea    0x2b8(%rdi),%r130xffffffff81376db5<unix_wait_for_peer+21>:    mov    %rbx,0x38(%rsp)0xffffffff81376dba<unix_wait_for_peer+26>:    mov    %gs:0xa580,%rax0xffffffff81376dc3<unix_wait_for_peer+35>:    mov    %rax,0x8(%rsp)0xffffffff81376dc8<unix_wait_for_peer+40>:    lea    0x18(%rsp),%rax0xffffffff81376dcd<unix_wait_for_peer+45>: mov %rbp,0x40(%rsp) (key2) rbp压入堆栈(0x58-0x40)处,正好是unix_wait_for_peer堆栈中ffff880f98e1bbe8处,即( [ffff880238514980:UNIX])0xffffffff81376dd2<unix_wait_for_peer+50>:    mov    %rdi,%rbx0xffffffff81376dd5<unix_wait_for_peer+53>:    mov    %rsi,%rbp0xffffffff81376dd8<unix_wait_for_peer+56>: mov %r13,%rdi 查看unix_wait_for_peer()函数源码:1005static long unix_wait_for_peer(struct sock *other, long timeo) (key3)1006{1007         struct unix_sock *u = unix_sk(other);1008         int sched;1009         DEFINE_WAIT(wait);1011   prepare_to_wait_exclusive(&u->peer_wait, &wait,TASK_INTERRUPTIBLE);..1019         if (sched)1020                 timeo =schedule_timeout(timeo);10211022         finish_wait(&u->peer_wait,&wait);1023         return timeo;1024} 根据s(key1)(key2)(key3)可以知道12813进程在等待unix_sock(ffff880238514980)crash>struct unix_sock ffff880238514980 | grep peer_wait -A 10  peer_wait = {    lock = {      raw_lock = {        slock = 3369322707      }    },    task_list = {      next = 0xffff880173427bc0,      prev = 0xffff8801877a7bc0    } } 查询出这个unix_sock是系统中的/dev/log文件(由syslog-ng创建,系统中大量需要记录log的进程需要通过这个unix_sock与syslog-ng通信,可以参考mansyslog-ng 和/etc/syslog-ng/syslog-ng.conf 配置文件)crash>struct unix_sock ffff880238514980...dentry= 0xffff880e7634b9c0,...crash>struct dentry 0xffff880e7634b9c0... name = 0xffff880e7634ba60 "log" ...  遍历这个unix_sock的所有等待队列,说明有645个进程正在等待这个unix_sock(ffff880238514980/dev/log)crash>list __wait_queue.task_list  -s__wait_queue.private -H 0xffff880173427bc0 | grep -i private | wc -l645 所有等待unix_sock的进程重定向到一个wait_unix_sock_process文件crash>list __wait_queue.task_list  -s__wait_queue.private -H 0xffff880173427bc0 | grep -i private  > wait_unix_sock_process查询所有的sshd进程crash>ps | grep sshd  7097     1   6  ffff880244cae5c0  IN  0.0   54088   1392 sshd  12813  7097   8  ffff880262eda140  IN  0.0   60148   2900 sshd  19055  7097   2  ffff880ff74c4200  IN  0.0   60148   2900 sshd  21642  7097   1  ffff880262fb4340  IN  0.0   60148   2904 sshd  21958  7097   1  ffff880ffab501c0  IN  0.0   60148   2900 sshd  22459   7097  6  ffff880ff1ed4100  IN  0.0  121052  10272 sshd  22476 22459   0  ffff88022d11a500  IN  0.0  121352   4552 sshd 23334 7097 2 ffff880174b04640 IN 0.0 60148 2900 sshd sshd进程大部分都在wait_unix_sock_process文件中,所以ssh登录之后会卡住查看syslog-ng进程堆栈crash>bt 15232PID:15232  TASK: ffff8801aba90680  CPU: 6  COMMAND: "syslog-ng" #0 [ffff88021ea8ba58] schedule atffffffff8139d2a4 #1 [ffff88021ea8bb10] schedule_timeout atffffffff8139d935 #2 [ffff88021ea8bba0] unix_wait_for_peer atffffffff81376e27 #3 [ffff88021ea8bc00] unix_dgram_sendmsg atffffffff813785c2 #4 [ffff88021ea8bcb0] sock_sendmsg atffffffff812e8ddc #5 [ffff88021ea8be50] sys_sendto atffffffff812e9318 #6 [ffff88021ea8bf80] system_call_fastpath atffffffff81002f7b 查看 unix_wait_for_peer()堆栈数据:crash>rd -SS ffff88021ea8bba0 -e ffff88021ea8bc00ffff88021ea8bba0:  unix_wait_for_peer+135 0000000000000001ffff88021ea8bbb0:  [ffff8801aba90680:task_struct]autoremove_wake_functionffff88021ea8bbc0:  ffff880fce8dfbc0 ffff880f98e1bbc0ffff88021ea8bbd0:  memcpy_fromiovec+87 [ffff880238514980:UNIX]ffff88021ea8bbe0:  [ffff880238514c30:UNIX][ffff880238514980:UNIX] (key4)ffff88021ea8bbf0: [ffff88104c1c3930:UNIX] 7fffffffffffffff 由(key4)可知syslog-ng也是在等待ffff880238514980 unix_sock 所以系统中大量的进程,包括sshd cron等其他的645个进程都在等待unix_sock(/dev/log)(/dev/log由syslog-ng创建),syslog-ng卡住在等这个unix_sock之后,系统中大量的进程都会卡住,包括sshd cron进程等. 但是syslog-ng为什么卡住从vmcore根本看不出来,很可能进程在用户层锁住了.通过查看客户系统中最近安装的软件发现,他们最近安装了两个定制软件,卸载之后系统恢复正常。# /bin/rpm -qa --lastCARKpam-11.01-1.19                    Tue Jun  9 22:49:22 2020CARKaim-11.01-1.5 Tue Jun 9 22:38:48 2020---end来源:https://my.oschina.net/u/4581933/blog/4487064
 0    0  35天前
hupei
130
我从未在公众号中推荐过书,但是这本新书非常值得推荐。是我前Linux内核部门主管多年良心之作,我去年就读过电子档六七遍,每次读的时候都是久久不想入睡,陷入沉思,把之前自己对linux内核的理解都更新迭代一遍,个人觉得是ULK的升级版。书名:用“芯”探核——基于龙芯的Linux内核探索解析作者: 陈华才  华科计算机博士/linux内核 maintainer 任职单位:江苏航天龙梦信息技术有限公司目录:购买链接: 点击"阅读原文"以下来自书中部分摘抄(以最终纸质书发版为准):前言《用芯探核》是一本基于龙芯平台,结合源代码来探索和解析Linux内核的书。为什么会有本书?市面上解析Linux内核的经典书籍已有不少,国内的有《Linux内核完全注释》,《Linux内核源代码情景分析》,《边学边干-Linux内核指导》;国外的有《Linux Kernel Development》(Linux内核开发,简称LKD),《Linux Device Driver》(Linux设备驱动,简称LDD)、《Understanding the Linux Kernel》(深入理解Linux内核,简称ULK)和《Professional Linux KernelArchitecture》(深入Linux内核架构)。其中LKD、LDD、ULK和《情景分析》这四本最经典的内核书籍被称为“四库全书”。那么,为什么本书还会问世?因为:1,大多数已有书籍基于X86或者ARM体系结构,而本书基于MIPS家族的龙芯处理器平台;2,大多数已有书籍基于旧的2.4或者2.6版本的Linux内核,而本书基于新的5.4.x版本的Linux内核[1]。其实,新书也是有的,尤其难能可贵的是还有国产新书。比如,2017年问世了一本由张天飞(网名笨叔叔)编写的《奔跑吧Linux内核》的书(简称RLK)。目前这本书得到了读者的广泛好评,可以说是第一本(小声地说一句,其实本书开始撰写的时间比RLK更早)基于4.x内核的内核书籍。不过RLK专注于ARM/ARM64,主要篇幅花在内存管理、进程管理和中断管理上面,不涉及设备驱动;而本书专注于MIPS/龙芯,对内核的覆盖也更为全面,除异常/中断处理、内存管理和进程管理之外还涉及了设备驱动和电源管理。因此RLK和本书谈不上孰优孰劣,只能说各有千秋。[1]最经典的《深入理解Linux内核》讲述的是Linux-2.6.11版本内核,最新的《深入Linux内核架构》讲述的是Linux-2.6.24内核,这两本书都是基于X86平台。等等,怎么没有提“四库全书”中的《Linux内核源代码情景分析》?个人愚见,这是一本非常详细的工具书,你可以把它当字典用。但如果当成教程直接阅读,很容易迷失自我,“不识庐山真面目,只缘身在此山中”。如果你需要4.x等新版本内核的源码解析,那么《奔跑吧Linux内核》和本书都适合你。《奔跑吧Linux内核》主要基于Linux-4.0.0版本的内核;而本书更新一点,绝大多数代码基于Linux-5.4.x版本的内核。如果你在基于龙芯处理器做内核开发,或者有兴趣在将来从事这方面的工作,那么恭喜,这本书非常适合你。一直以来,从事龙芯内核开发工作的“标准教程”是《龙芯处理器用户手册》、《See MIPS Run》第二版和《深入理解Linux内核》第三版。然而,《龙芯手册》不涉及Linux内核,《See MIPS Run》离真正的龙芯差距太大,而《深入理解Linux内核》所使用的内核版本又过于古董。本书试图解决这个问题——有了《用芯探核》,你将不再需要《See MIPS Run》和《深入理解Linux内核》。本书使用的Linux内核源代码的Git仓库建立在航天龙梦信息技术有限公司的开发者网站上,读者可自行下载:http://dev.lemote.com:8000/cgit/linux-official.git/。本书的内容概述《用芯探核》基于龙芯和Linux讲述,所以在第一章“基础知识”中会对龙芯处理器和Linux内核做一个概括性的介绍。虽然本书是一本源代码解读的书,但跟别的书籍不一样的是:我们较多地瞄准代码的主干流程,而较少地深入过多的细枝末节。因此,在“基础知识”这一章里面,我们还会给读者介绍一种快速而有效的代码阅读方法,称为“先观其大略,再咬文嚼字”。并且引入了“树形视图”和“链式视图”两种比流程图更有用的代码解析方法。作者认为,从启动过程开始研究操作系统内核是一个比较好的切入点。因此,在掌握基础知识以后的第二章里面,我们将开始解析Linux内核在龙芯计算机上的启动过程。中断处理、内存管理和进程管理是操作系统原理的三大核心功能,它们就在后续的章节中分别予以介绍。由于Linux是一体化内核(或称巨内核,与之相对的是微内核)操作系统,因此设备驱动也放在内核层实现。设备驱动所涵盖的范围非常广泛,不可能面面俱到。因此本书只选取了两种典型的设备驱动,Radeon显卡与E1000E网卡,来做举例性的原理说明。电源管理是操作系统中一个相对独立但又必不可少的功能组件,因此本书将用单独的一章来进行介绍。来源:https://my.oschina.net/u/4581933/blog/4464941
 0    0  35天前
hupei
150
同一个版本的类unix往往有多个不同的安装镜像,这些镜像往往以livecd、livedvd、netinst等结尾,其中,带live的镜像是一个光盘启动的镜像,也就是说可以从该光盘启动进入系统并可以体验。一般而言,cd的容量小于dvd,所以cd版本的安装文件要小于dvd版本,所带的软件包也会少一些。 在Centos官方选择下载centos的时候有好几个文件可供下载,包括liveCD、liveDVD和bin-DVD等等。这些文件都有什么区别,我们应该选择哪个文件下载呢?liveDVD版本:它就是一个体验版,无需安装到硬盘,插入光盘就可以通过光盘软件并体验Centos的各种功能。其实就是一个光盘CentOS系统,可通过光盘启动电脑,启动出CentOS系统,也有图形界面,也有终端。也可以安装到计算机,但是有些内容可能还需要再次到网站下载(自动)liveCD版本:和liveDVD一样,也是一个体验版和DVD体验版唯一的区别就是CD的存储空间要小一些,文件也会小一些,里面的软件包少一点。bin-DVD版本:普通安装版本,如果需要给服务器安装一个centos系统到硬盘,就需要选择这个版本。这个版本的文件很大,时里包含了大量的常用软件,这样安装系统时候就可以直接安装而无需从网络上再去下载了。minimal版本:最小化安装版,和bin-DVD一样它也是一个安装版镜像文件,只是minimal这个文件中只包含了系统和系统必须的几个基本软件包。netinstall版本:网络版,和bin-DVD一样它也是一个安装版镜像文件,但是netinstall的软件包都需要通过网络下载进行安装而bin-DVD镜像自身包含了离线的软件包无需下载内地部分的镜像地址:华为开源镜像站https://mirrors.huaweicloud.com/centos/China NetEase(163网易)http://mirrors.163.com/centos/China Northeastern University, Shenyang Liaoni(东北大学)http://mirror.neu.edu.cn/centos/China Sohu Inc, Beijing P.R. China(搜狐CentOS镜像)http://mirrors.sohu.com/centos/阿里巴巴开源镜像站https://mirrors.aliyun.com/centos/China University of Science and Tech of China(中科大)http://centos.ustc.edu.cn/centos/
 0    0  40天前
hupei
165
想在 U 盘里存储多个 ISO 文件,然后在使用 U 盘引导启动时,自由选择从哪个 ISO 中进行启动并进行下一步操作么?想你的 U 盘里有多个不同的 PE 系统么?以前想这么办比较的复杂难搞,不过有了 Ventoy,一切都变得轻松起来。Ventoy 官网:https://www.ventoy.net/cn/index.htmlVentoy 是一个制作可启动 U 盘的开源工具。有了 Ventoy,用户就无需因为想要使用不同的 PE 或操作系统镜像而反复地格式化 U 盘,用户只需要把 ISO 文件拷贝到 U 盘里面就可以选择性启动了,无需其它操作。也就是说用户可以一次性拷贝很多个不同类型的 ISO 文件,在启动时 Ventoy 会显示一个菜单来选择需要使用的那一个 ISO 文件。比如小编只有一个 U 盘,已经在里边复刻了 Windows 10 的安装镜像,现在想用 Windows 7 安装镜像。换了以前就得把 U 盘格式化了,再把 Windows 7 镜像复刻进 U 盘。而 Ventoy 的出现就可以让你省却许多步骤,让多个 ISO 文件共存,并能选择性引导,想用哪个 ISO 镜像进行引导就用哪个。Ventoy 的使用也很简单,Ventoy 支持 Windows 以及 Linux,这里以 Windows 版为例。下载好 Ventoy,解压后即可使用。插入 U 盘即可安装 Ventoy 到 U 盘。需要注意的是,安装的时候,U 盘将会被格式化,里面所有的数据都会丢失! 所以 U 盘里有啥需要保留的文件记得先备份出来!不要选错 U 盘!如果 Ventoy 发布了新版本之后,用户可以点击 升级按钮来对 U 盘中安装的 Ventoy 进行升级,或者 Linux 系统中使用 -u 选项进行升级。需要说明的是,升级操作是安全的,不会影响原有的 ISO 文件。一个U盘能装N个系统!装系统神器Ventoy你玩过吗图 1 Ventoy 安装界面一个U盘能装N个系统!装系统神器Ventoy你玩过吗图 2 警告!接下来,你要做的就是把 ISO 文件拷贝进 U 盘即可,可以拷贝到 U 盘根目录下,也可以拷贝到指定目录下。需要注意的是 ISO 文件名不要有中文,目录也不要有中文,也不要将 ISO 文件放到太深层的目录下。安装完成之后,U 盘会被分成两个区。第一个分区将会被格式化为 exFAT 文件系统,用户可以自行将该分区转换为需要的分区格式。用户可以把 ISO 文件放在任何位置,任何目录或者子目录下都可以。Ventoy 在启动的时候会遍历所有的目录、子目录,找出所有的 ISO 文件 然后按照字母排序显示在菜单中。一个U盘能装N个系统!装系统神器Ventoy你玩过吗图 3 将 ISO 文件拷贝如 U 盘一切就绪后,用户就可以使用这个安装有 Ventoy 的 U 盘进行电脑的引导启动操作,启动后会进入 Ventoy 的 ISO 选择界面,这时候选择需要使用的 ISO 文件即可进入该 ISO 的引导界面,比如进入 Windows 安装或者进入 PE 系统。一个U盘能装N个系统!装系统神器Ventoy你玩过吗图 4  Ventoy 的 ISO 选择界面总结怎么样,Ventoy 的使用够简单吧,它用简单的操作满足了我们使用多种 ISO 镜像进行引导的操作。有需要的用户还不赶紧试试简单易用的 Ventoy。
 4    0  48天前
hupei
169
解决方法一原因是bai迅雷的IE插件不兼容导致du的。1、首先打开IE浏览器,进入到首页zhi中,点击打开右上角的齿轮dao,在出现的菜单中选择打开“Internet 选项”。2、然后在弹出来的窗口中点击打开“程序”设置界面。3、然后在出现的页面中,点击打开“管理加载项”设置选项。4、然后在弹出来的窗口中,找到迅雷的插件,鼠标右键单击选择“禁用”,回车确定,如果觉得麻烦可以直接卸载迅雷程序。解决方法二最快捷bai的方式是使用电脑du管家的电脑诊所功能修复一下,一键就可以完zhi成,避免复杂dao的手动修复步骤附:手动修复步骤(来源:腾讯电脑管家电脑诊所,自动修复请点击上方的【立即修复】)解决方法三方案一:清除IE缓存1. 打开IE浏览器→点击【工具】→ 【Internet 选项】→【删除】:2. 勾选所有选项→点击【确定】→ 在确认窗口中点击【确定】(如使用其他浏览器,请用类似方法清除浏览器缓存)方案二:注册IE组件点击【开始】菜单→在搜索框中输入"cmd"→按键盘enter(回车)键:在弹出的黑色窗口中,按顺序输入以下内容,按键盘enter(回车)键,再逐一完成以下全部部件注册:  regsvr32 atl.dll  regsvr32 shdocvw.dll  regsvr32 urlmon.dll  regsvr32 browseui.dll  regsvr32 oleaut32.dll  regsvr32 shell32.dll  regsvr32 jscript.dll  regsvr32 vbscript.dll  regsvr32 mshtmled.dll  regsvr32 CLBCATQ.DLL  regsvr32 cscui.dll  regsvr32 MLANG.dll  regsvr32 stobject.dll  regsvr32 WINHTTP.dll  regsvr32 msxml3.dll  regsvr32 query.dll  regsvr32 jscript9.dll  regsvr32 hlink.dll建议点击本回答上侧【立即修复】按钮,使用电脑诊所一键自动完成所有修复步骤。方案三:修复注册表1. 点击【开始】菜单→在搜索框中输入"regedit"→按键盘enter键:2. 定位到\HKEY_ROOT\IE.HTTP\shell ,双击打开右侧【(默认)】将默认值设置为空→点击【确定】:3. 根据前2个步骤,依次设置如下注册表项  3.1 . 设置\HKEY_CLASSES_ROOT\IE.HTTP\shell\open\command 默认值为""C:\Program Files\Internet Explorer\iexplore.exe" -nohome "  (64位系统则,设置为"\%ProgramFiles(x86)%\Internet Explorer\iexplore.exe -nohome")(不包括最外层的双引号) 类型为REG_SZ  3.2. 设置\HKEY_CLASSES_ROOT\IE.HTTP\shell\open\ddeexec 默认值为""%1",,-1,0,,,, "(不包括最外层的双引号) 类型为REG_EXPAND_SZ  3.3.设置\HKEY_CLASSES_ROOT\IE.HTTP\shell\open\ddeexec\Application 默认值为"IExplore " (不包括最外层的双引号)  类型为REG_SZ   3.4.设置\HKEY_CLASSES_ROOT\IE.HTTP\shell\open\ddeexec\Topic 默认值为"WWW_OpenURL" (不包括最外层的双引号)  类型为REG_SZ  3.5.设置\HKEY_CLASSES_ROOT\http\shell\open\command 默认值为"%programFile%\internet explorer\iexplore.exe -nohome"(64位系统则,设置为"\%ProgramFiles(x86)%\Internet Explorer\iexplore.exe -nohome")(不包括最外层的双引号) 类型为REG_SZ  3.6. 设置\HKEY_CLASSES_ROOT\http\shell\open\ddeexec 默认值为""%1",,-1,0,,,, "(不包括最外层的双引号) 类型为REG_EXPAND_SZ  3.7. 设置\HKEY_CLASSES_ROOT\http\shell\open\ddeexec\Application 默认值为"IExplore " (不包括最外层的双引号)  类型为REG_SZ   3.8. 设置\HKEY_CLASSES_ROOT\http\shell\open\ddeexec\Topic 默认值为"WWW_OpenURL" (不包括最外层的双引号)  类型为REG_SZ方案四:调低cookie隐私等级打开IE浏览器 → 点击【工具】→【Internet 选项】点击【隐私】→将【选择Internet 区域设置】调为【中】→点击【确定】:方案五:关闭GPU加速(适用于IE9以上版本)打开IE浏览器 → 点击【工具】→【Internet 选项】点击【高级】→勾选【使用软件呈现而不使用GPU呈现*】→点击【确定】:如果以上诉步骤未能生效,再进入后续步骤:方案六:重置IE(说明:如果您使用网络代理或者对浏览器有特殊设置,请保存设置后再进行操作)打开IE浏览器 → 点击【工具】→【Internet 选项】点击【高级】→点击【重置】→勾选【删除个性化设置】→点击【确定】→【确定】:方案七:修复IE浏览器1. 打开【电脑管家】→选择【软件管理】→点击【软件仓库】→输入"Internet Explorer"开始搜索→点击【修复】(IE8以下的版本可以直接点击【下载】):2. 安装时根据提示选择【我不想立即参与(O)】→点击【下一步(N)】→点击【我同意(A)】不勾选【安装更新(I)】→【下一步(N)】→点击【立即重新启动(推荐)(H)】方案八:安装其他浏览器后设置其他浏览器为默认浏览器打开电脑管家→点击【软件管理】,在搜索框中输入"谷歌浏览器"→找到软件后点击安装打开电脑管家→点击【工具箱】,点击【默认程序设置】→在上网浏览器列表中选择【谷歌浏览器】:注:腾讯电脑管家为IE浏览器出错崩溃问题定制部分修复步骤,因为操作过于繁杂,故未全部列出。若问题仍未解决,建议点击本回答上侧的【立即修复】按钮,进行深度修复。
 0    0  48天前
快速发帖高级模式
guest
这是你的故事~
我的小伙伴
Powered by HuPei.net © 2020
电脑
您的IP:18.208.202.194,2020-09-22 02:02:03,Processed in 0.05198 second(s).
Powered by HuPei ICP许可证: 鄂ICP备15003222号-1

ICP许可证: 鄂ICP备15003222号-1

支持原创软件,抵制盗版,共创美好明天!