常用的微服务开发概念

Istio是Google继Kubernetes之后的又一开源力作,主要参与的公司包括Google,IBM,Lyft等公司。它提供了完整的非侵入式的微服务治理解决方案,包含微服务的管理、网络连接以及安全管理等关键能力,无需修改任何代码就能够实现微服务的负载均衡,服务与服务之间的认证授权以及监控。从整个基础设施角度上看,可以将它理解为PaaS平台上的一个面向微服务管理平台的补充。

 

Kubernetes提供了部署、升级和有限的运行流量管理能力;利用service的机制来做服务注册和发现,转发,通过kubeproxy有一定的转发和负载均衡能力。但并不具备上层如熔断、限流降级、调用链治理等能力.

 

Istio则很好的补齐了k8s在微服务治理上的这部分能力,同时是基于k8s构建的,但不是像SpringCloud Netflix等完全重新做一套。Istio是谷歌微服务治理上的非常关键的一环。

 

集群

一个理想的集群是,用户从来不会意识到集群系统底层的节点,在他/她们看来,集群是一个系统,而非多个计算机系统。并且集群系统的管理员可以随意增加和删改集群系统的节点。

 

开放式系统互联参考模型

OSI的7层从上到下分别是 7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层 ;其中高层(即7、6、5、4层)定义了应用程序的功能,下面3层(即3、2、1层)主要面向通过网络的端到端的数据流

 

rpm

RMPLINUX 下的一种软件的可执行程序,你只要安装它就可以了。这种软件安装包通常是一个RPM包(Redhat Linux Packet Manager,就是Redhat的包管理器),后缀是.rpm

 

RPM是Red Hat公司随Redhat Linux推出了一个软件包管理器,通过它能够更加轻松容易地实现软件的安装。

 

 

所谓同源是指,域名,协议,端口均相同,只要有一个不同,就是跨域。不明白没关系,举个栗子

 

http://www.123.com/index.html 调用 http://www.123.com/server.php (非跨域)

 

http://www.123.com/index.html 调用 http://www.456.com/server.php (主域名不同:123/456,跨域)

 

http://abc.123.com/index.html 调用 http://def.123.com/server.php (子域名不同:abc/def,跨域)

 

http://www.123.com:8080/index.html 调用 http://www.123.com:8081/server.php (端口不同:8080/8081,跨域)

 

http://www.123.com/index.html 调用 https://www.123.com/server.php (协议不同:http/https,跨域)

 

 

 

k8s和docker容器

对于孤立的容器而言,共享文件系统、网络通信、调度、负载均衡和分发都是要面对的挑战。

 

Kubernetes 使用标签作为“名牌”来标识事物。它可以根据这些标签进行查询。标签是开放性的:你可以用他们来表示角色、稳定性或其他重要的属性。

 

在 Kubernetes 中,Pod 代表一个可运行的工作单元。通常,你会在 Pod 中运行一个容器。但是对于一些容器紧密耦合的情况,你可以选择在同一个 Pod 中运行多个容器。Kubernetes 负责将你的 Pod 和网络以及 Kubernetes 的其余环境相连。

 

命名空间是 Kubernetes 内部的分组机制。服务、Pod、Replication Controller 和卷可以在命名空间内部轻松协作,但命名空间提供了与集群其他部分一定程度的隔离。

 

 

BIO (Blocking I/O):同步阻塞I/O模式。

NIO (New I/O):同步非阻塞模式。

AIO (Asynchronous I/O):异步非阻塞I/O模型。

那么,同步阻塞、同步非阻塞、异步非阻塞都是怎么回事呢?关于这部分内容也可以查看《漫话:如何给女朋友解释什么是IO中的阻塞、非阻塞、同步、异步?》。

同步阻塞模式:这种模式下,我们的工作模式是先来到厨房,开始烧水,并坐在水壶面前一直等着水烧开。

同步非阻塞模式:这种模式下,我们的工作模式是先来到厨房,开始烧水,但是我们不一直坐在水壶前面等,而是回到客厅看电视,然后每隔几分钟到厨房看一下水有没有烧开。

异步非阻塞I/O模型:这种模式下,我们的工作模式是先来到厨房,开始烧水,我们不一一直坐在水壶前面等,也不隔一段时间去看一下,而是在客厅看电视,水壶上面有个开关,水烧开之后他会通知我。

阻塞VS非阻塞:人是否坐在水壶前面一直等。

同步VS异步:水壶是不是在水烧开之后主动通知人。

 

BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序直观简单易理解。

NIO方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂,JDK1.4开始支持。

AIO方式适用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂,JDK7开始支持。

 

 

Netfilter&iptables

 

iptables,firewalld 等工具可以维护Netfilter内核防火墙系统。

 

 

SELinux是实现linux的强制访问控制机制

 

openvpn

 

 

访问控制列表(ACL,Access Control Lists)是应用在路由器(或三层交换机)接口上的指令列表,用来告诉路由器哪些数据可以接收,哪些数据是需要被拒绝并丢弃。

 

 

设置网络的时候 只要是在一个网关下的各个机器就可以通信

mock对象是指对外面依赖系统的模拟,在运行时刻可以根据假设的需求提供期望的结果。fake对象是一种虚假的实现,内部使用了固定的数据或逻辑,只能返回特定的结果。

fack是一种实体的模拟,而mock是对逻辑的模拟

备注:mock是一种功能丰富的stub。

 

SELinux 是 2.6 版本的 Linux 内核中提供的强制访问控制(MAC)系统。对于目前可用的 Linux安全模块来说,SELinux 是功能最全面,而且测试最充分的,

 

 

ipvs称之为IP虚拟服务器(IP Virtual Server,简写为IPVS)。是运行在LVS下的提供负载平衡功能的一种技术

 

 

TDD是测试驱动开发(Test-Driven Development)的英文简称,是敏捷开发中的一项核心实践和技术,也是一种设计方法论。

 

Daemon()程序是一直运行的服务端程序,又称为守护进程。通常在系统后台运行,没有控制终端,不与前台交互,Daemon程序一般作为系统服务使用。

 

kubelet:运行在cluster所有节点上,负责启动POD和容器

kubeadm:用于初始化cluster

kubectl:kubectl是kubenetes命令行工具,通过kubectl可以部署和管理应用,查看各种资源,创建,删除和更新组件

 

 

 

 

Flannel实质上是一种“覆盖网络(overlay network)”,也就是将TCP数据包装在另一种网络包里面进行路由转发和通信,目前已经支持UDP、VxLAN、AWS VPC和GCE路由等数据转发方式。

 

 

 

 

 

 

微服务中订单调用库存,订单依赖库存的vo, 当库存中的vo更新之后,可以通过版本来v进行管理。这样可以避免vo的强依赖。

 

 

 

 

Cloud Native是Matt Stine提出的一个概念,它是一个思想的集合,包括DevOps、持续交付(Continuous Delivery)、微服务(MicroServices)、敏捷基础设施(Agile Infrastructure)、康威定律(Conways Law)等,以及根据商业能力对公司进行重组。

 

企业采用基于Cloud Native的技术和管理方法,可以更好的把业务迁移到云平台,从而享受云的高效和按需资源能力。

 

 

 

 

 

 

Spring微服务架构是一种基于Spring Cloud的架构模式,用于构建分布式系统中的微服务。它通过将一个大型的单体应用程序拆分成多个小型的、独立部署的服务来实现系统的解耦和灵活性。每个微服务都有自己的业务逻辑和数据库,并通过轻量级的通信机制(如RESTful API)进行相互通信。 Spring微服务架构的核心概念包括以下几个方面: 1. 服务注册与发现:微服务架构中的每个服务都会注册到服务注册中心,以便其他服务可以发现和调用它们。常用的服务注册中心包括Eureka和Consul。 2. 负载均衡:微服务架构中的服务通常会有多个实例运行在不同的主机上,负载均衡可以确保请求被均匀地分发到各个实例上,提高系统的可用性和性能。 3. 服务间通信:微服务之间通过轻量级的通信机制进行通信,常用的通信方式包括RESTful API和消息队列。 4. 服务容错:微服务架构中的服务可能会出现故障或不可用的情况,为了提高系统的容错性,可以使用断路器模式和服务降级等机制。 5. 配置管理:微服务架构中的每个服务都有自己的配置,Spring Cloud提供了Spring Cloud Config来集中管理和动态更新配置,避免了每个服务都需要复制相同的配置的问题。 6. 服务监控和追踪:微服务架构中的每个服务都需要进行监控和追踪,以便及时发现和解决问题。Spring Cloud提供了集成了监控和追踪功能的组件,如Spring Cloud Sleuth和Zipkin。 7. 服务网关:微服务架构中的服务通常会有多个入口点,为了简化客户端的调用和保护内部服务的安全性,可以使用服务网关来进行请求的路由和过滤。 总之,Spring微服务架构通过将一个大型的单体应用程序拆分成多个小型的、独立部署的服务,实现了系统的解耦和灵活性。它提供了一整套解决方案,包括服务注册与发现、负载均衡、服务间通信、服务容错、配置管理、服务监控和追踪以及服务网关等,帮助开发人员构建可扩展、可靠和高效的微服务系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值