首页

来自智得网
跳转至: 导航、​ 搜索

精选文章

SOA查看全文
SOA架构简化图.png
SOA是Service-Oriented Architecture的简称,最早是资讯公司Garnter在1996年提出的概念。

SOA架构是面向服务的,SOA继承了很多面向对象的特点,比如说面向对象的封装,经常代表很多同一实体的功能封装成一个模块,为其他对象调用者提供接口调用,良好的面向对象设计就是暴露接口,隐藏实现,SOA的设计同样需要明确服务定义,不同的是SOA的服务定义不是基于某一个编程语言或者平台的具像化定义,而是基于业务描述语言定义的服务接口,最终可以由不同的技术栈进行实现,SOA不同的模块之间也可以采用异构的技术体系,彼此直接通过远程调用的方式进行交互,或者是通过ESB进行数据交互。 SOA的服务一般提供标准稳定的接入服务,SOA服务作为封装好的功能模块,不同为微服务是服务研发团队内部的定位,SOA服务面向的是其他的业务团队,甚至组织架构之外的业务方,SOA服务之间体现了大型企业之间跨组织团队的信息协作和数据交互,这些模块之间已经形成了相互依赖的生态链条。所以服务的稳定性很重要,服务的描述一定要准确,稳定,避免频繁变更,而且SOA服务主要功能是作为功能模块对外提供服务,所以一般服务的粒度较粗,SOA服务承载更多的业务逻辑。 不同于微服务,微服务架构往往不能提供独立的业务功能,例如微服务的网关服务,不能独立提供有业务语义的功能,但是SOA服务提供的独立完整的业务接口,而且组成服务的构件都是独立部署并具有独立的上下文环境,SOA组件之间一般不存在强依赖关系,组件之间即使需要通信一般会采用ESB 消息总线等方式进行交互。 webservice

webservice是SOA架构中组件通常对外暴露的方式,webservice提供的服务一般通过Web服务描述语言…
一致性查看全文
一致性模型.png
在分布式环境下,因为多副本,网络分区,硬件故障,物理距离等问题导致的数据乱序问题,延迟问题,不可达问题是不可避免的,一致性问题就是在诸多不确定因素下,保证程序的正确性。

影响正确性主要有以下的原因: 并发 在单线程单核场景下,程序的执行顺序和程序表达的逻辑顺序是一致的,不会出现数据不一致的情况,但是在多线程场景下,多个线程共享存储器,线程读取的数据可以是其他线程写入的值,此时从当前线程的视角来看,数据的正确性因为共享存储的原因,需要更多的进行协调。 延迟 延迟不仅仅发生在分布式系统下,即使是单机的数据读写也不是一个瞬时的过程,从距离CPU 30厘米的内存条中读取数据至少需要几个纳秒,而不同的数据机房甚至远隔几千公里。物理距离导致了不同服务器之间的数据会因为不同的延迟而数据不一致。 而在分布式系统中,因为延迟问题被放大,甚至会产生不可达的情况,所以我们没办法完全避免歧义的产生。只能增加一些特定的约束。这些约束就是一致性的理论基础,分为线性一致性和顺序一致性。 线性一致性 虽然每个操作都是有耗时的,线性一致性的约束是指每个涉及到数据的操作都是原子的,这里的原子并非是指这些操作是物理上不可中断的,可以横跨多个系统组件甚至多台机器,但是其外部表现和一个原子操作是等效的。 我们可以利用线性一致性的原子性约束来安全地修改状态。我们定义一个类似CAS(compare-and-set)的操作,当且仅当寄存器持有某个值的时候,我们可以往它写入新值。 CAS操作可以作为互斥量,信号量,通道,计数器,列表,集合,映射,树等等的实现基础,使得这些共享数据结构变得可用。线性一致性保证了变更的安全交错。

此外,线性一致性的时间界限保证了操作完成后…
Kubernetes查看全文
Large-scale cluster management at Google with Borg.pdf
Kubernetes因为在英文名称首字母k和尾字母s中间一共有8个字符,而简称为k8s,k8s最早源自google公司内部的borg项目。

k8s是一种容器编排技术,主要解决下列问题: 自动上线和回滚 k8s有完善的部署方案,可以对应用/配置进行分批上线,而确保不会同时终止所有的实例。在应用出现问题的时候,可以回滚到指定版本。 服务发现与负载均衡 k8s为容器提供了单独的IP地址(IPv4和IPv6双协议栈)以及DNS名称,可以实现负载均衡。 存储编排 k8s支持NFS、Ceph等文件系统以及AWS等公有云存储设施,可以实现自动挂载。 Secret和配置管理 k8s支持隐私配置。 自动装箱 根据资源需求或者其他约束条件,自动调节容器数量,实现水平扩缩容,更好的提高资源利用率。 批量执行 k8s可以管理批处理和CI工作负载,自动替换失效的容器,可以进行自我修复。 编排工具对比 名词解释 Pod pod是最小的调度单元,pod里面会包含若干个容器。 Deployment Deployment是pod的管理和控制单元,会通过自动扩缩容控制pod集群的数量。 Ingress Ingress管控pod的网络。 Namespace 通过namespace的命名空间可以把k8s集群分成若干个资源不共享的虚拟集群。 节点类型 K8S 集群将节点分为两类,Master节点和Worker节点。 Master节点的组件如下:

API Server,K8S的请求的入口服务。API Server负责接收来自客户端或者CLI命令行的所有请求,API Server根据用户的请求类型,会路由给其他组件,通知其他组件执行具体操作…

热门分类

算法题库

精选内容