架构

AWS的性能检测服务X-Ray(APM)

无人久伴 提交于 2019-12-13 10:15:51
发展之势: 随便最几年微服务和Serverless(Lambda)的盛行,把原来一套系统可以按业务,人员或业务架构拆分得更加详细,让开发人员更专注于自己负责微服务或Serverless模块,同时利用DevOps管理流程,这样可以提升业务的快速迭代。虽然微服务或Serverless确实是可以提升业务的持续服务和可靠性,但是业务复杂度,管理难度和管理成本随之提升,如何做好业务故障排查,特别是性能和稳定是很多企业开发及运维团队所关心的,AWS为此提供一项易用且可视化的服务X-Ray,借助 AWS X-Ray,开发人员能够轻松分析其生产行为及具有端到端跟踪功能的分布式应用程序。您可以使用 X-Ray 确定性能瓶颈、边缘情况错误以及其他难于检测的问题。X-Ray 支持各种类型或大小的开发或生产应用程序,从简单的异步事件调用和三层 Web 应用程序到使用微服务架构构建的复杂的分布式应用程序。这让开发人员能够快速找到并解决其应用程序中出现的问题,并改善最终用户对其应用程序的体验。 功能介绍: X-Ray是可以很好的与AWS近几年特别流行的技术(ECS/Lambda等)集成,尤其是未来有可能成为主流技术的Lambda,它可以提供数据跟踪,数据轨迹采集与性能分析等可视化技术服务。以下我们来介绍现在及未来都比较常用的API化的应用,API化采用基础技术就是Lambda

k8s架构原理

好久不见. 提交于 2019-12-13 09:44:43
一、k8s架构图 二、k8s架构模式: master(cluster)/worker(node)架构 master组件: 1.kube-apiserver: 提供restful接口指令供客户端或者其他组件调用,客户端指的是kubectl命令行工具,其他通信组件包括controller和scheduler 2.etcd: 负责存储集群状态 3.controller 管理并实现k8s的的各种流程,使用k8s管理容器,而不是直接使用容器,目的就是为容器提供统一编排,为用户提供声明式的调用,k8s维护着用户的期望,用户只要告诉k8s需要几个服务,需要什么配置就可以了,不需要关心底层k8s怎么实现的,但是k8s除了正常的创建管理,还伴随着异常情况的发生,比如容器挂掉,网络不通等,这时候需要controller监控资源状态等信息并更新到etcd,controller相当于运维工程师的角色. k8s把各种操作都认为是某种类型的某个方法,从而将不同的操作分给不同的方法执行,k8s认为一切皆资源,繁复的内容抽象成不同的资源放到不同的方法上执行 4.Scheduler 资源调度,根据系统资源的使用情况,将pod合理分配到相应的node节点,并通过apiserve告知etcd更新数据库 worker组件: 1.kubelet controller如何监控不通资源信息

微服务的发展

帅比萌擦擦* 提交于 2019-12-13 07:06:07
微服务 1、什么是微服务? 微服务是一个新兴的软件架构,就是把一个大型的单个应用程序和服务拆分为数十个的支持为服务。一个为服务的策略可以让工作变得更为简便,它可以扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。 简单举例:一艘航空母舰作战能力虽强,但是弱点太明显,就是防御能力太差,单艘的航空母舰很少单独行动,通常航空母舰战斗群才是主要的军事力量,你可以把单艘航母理解为单体应用(防御能力差、机动性不好),把航母战斗群(调度复杂、维护费用高)理解为微服务。 2、微服务发展 Web应用架构受系统用户量、开发人员组织方式影响严重。过去二十年互联网迅速发展,Web架构也从单体式演进出微服务,背后还有比如 Martin Fowler 提出的理论支撑。改进系统架构的目的是为了满足系统可靠性、并发量以及快速开发的需求。所有的改进方案都是为了解决这其中一个或多个问题而产生的。 3、应用架构的变迁 第一代:单体架构 第二代:SOA架构 第三代:微服务架构 最开始Web服务器、数据库全部部署在同一台服务器上,这也是最简单的应用架构,通常公司早期项目都采用这种方式。在很长一段时间里单体结构可以满足系统快速开发与并发量的需求。当用户量越来越大,通常会数据库性能会成为系统瓶颈,此时可以将Web业务与数据库部署在不同服务器上,增强数据库服务器的配置并做读写分离等提高系统的吞吐量与可用性。

安全容器在边缘计算场景下的实践

岁酱吖の 提交于 2019-12-12 23:41:24
导读: 随着云计算边界不断向边缘侧延展,传统 RunC 容器已无法满足用户对不可信、异构工作负载的运行安全诉求,边缘 Serverless、边缘服务网格等更是对容器安全隔离提出了严苛的要求。本文将介绍边缘计算场景如何构建安全运行时技术基座,以及安全容器在架构、网络、监控、日志、存储、以及 K8s API 兼容等方面的遇到的困难挑战和最佳实践。 正文: 本文主要分为四个部分,首先前两个部分会分别介绍一下ACK安全沙箱容器和边缘容器(Edge Kubernetes),这两个方向内容目前大部分人接触并不是很多。第三部着重分享安全沙箱容器在边缘这边的解决方案与实践经验,最后会介绍一下我们在安全容器方向新的探索和实践-可信/机密计算。 安全容器运行时 据 Gartner 预测,2019 年一半以上的企业会在其开发和生产环境中使用容器部署应用,容器技术日趋成熟稳定,然而在未容器化的企业或用户中,42% 以上的受访者表示容器安全成为其容器化的最大障碍之一,主要包括容器运行时安全、镜像安全和数据安全加密等。 端到端的云原生安全架构 在讲安全沙箱容器之前简单介绍下端到端云原生安全架构,主要分为三部分: 1.基础架构安全 基础架构安全依赖于云厂商或者是专有云一些基础设施安全能力,也包括 RAM认证,细粒度RAM授权,支持审计能力等等。 2.安全软件供应链 这部分包括镜像签名,镜像扫描,安全合规等等

pg复制架构及实现

独自空忆成欢 提交于 2019-12-12 22:28:15
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> pg复制架构及实现 [复制链接] 新浪微博达人勋 mars [数据中国会员] [Dataguru优秀学员] 电梯直达 跳转到指定楼层 1# 发表于 2016-12-11 22:04 | 只看该作者 回帖奖励 以下内容主要介绍pg streaming replication pg streaming replication 采用的是非共享式主从(M/S)架构,可设置同步,也可设置异步模式 实现的原理: 从库连接主库的replication数据库 主库的sender processor 给已经连接的从库发送xlog 从库的receiver processor 接收主库发送的xlog 从库的revocery processor replay xlog 主从库对xlog的处理,主要通过xlog lsn来实现日志与数据的处理及主从数据的重放 来源: oschina 链接: https://my.oschina.net/u/1016427/blog/808650

一种海量日志存储、分析解决方案V1.0

假装没事ソ 提交于 2019-12-12 22:27:08
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 本方案试运行中,待观测其性能、稳定性及健壮性,请勿直接应用生产。 涉及的技术栈。 hadoop,版本2.6.0,主要用来存储数据及进行离线分析。 hive,版本1.2.1,主要用来管理数据(注意没有用到MR分析); hbase,版本1.2.4,主要用来存储中间输出数据(可看作缓存); flume,版本1.7.0,主要用来从业务系统收集数据以及从jms收集数据。 kafka,版本0.10.1.0,主要用来收集业务系统日志数据和汇总日志数据。 spark,版本2.0.1,主要用来取代hive的MR分析,并针对基础数据进行数据筛选分析等(可看作离线数据分析引擎)。 redis,版本3.0.6,主要用来缓存分析中的增量数据,设定当天数据时效为36小时,每天同步一次昨天的增量日志数据到全量数据库中。 storm,版本0.10.2,主要用来日志实时分析,如用户画像实时更新,PV统计等。 mongodb,版本3.2.10,主要用来存储终态数据,如用户画像、PV值等供业务系统使用。 ganglia,版本3.2.0,主要用来监控各节点状态。 其它如haproxy、nginx等辅助ha工具这里不再赘述。 首先看一张架构图。 根据架构图设计出网络拓扑图 最后是流程图 以下是数据流向说明: 1、业务系统收集日志数据 2

Dubbo和Spring Cloud微服务架构

老子叫甜甜 提交于 2019-12-12 20:19:25
微服务架构是互联网很热门的话题,是互联网技术发展的必然结果。它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。虽然微服务架构没有公认的技术标准和规范或者草案,但业界已经有一些很有影响力的开源微服务架构框架提供了微服务的关键思路,例如Dubbo和Spring Cloud。各大互联网公司也有自研的微服务框架,但其模式都于这二者相差不大。 微服务主要的优势如下: 1、降低复杂度 将原来偶合在一起的复杂业务拆分为单个服务,规避了原本复杂度无止境的积累。每一个微服务专注于单一功能,并通过定义良好的接口清晰表述服务边界。每个服务开发者只专注服务本身,通过使用缓存、DAL等各种技术手段来提升系统的性能,而对于消费方来说完全透明。 2、可独立部署 由于微服务具备独立的运行进程,所以每个微服务可以独立部署。当业务迭代时只需要发布相关服务的迭代即可,降低了测试的工作量同时也降低了服务发布的风险。 3、容错 在微服务架构下,当某一组件发生故障时,故障会被隔离在单个服务中。 通过限流、熔断等方式降低错误导致的危害,保障核心业务正常运行。 4、扩展 单块架构应用也可以实现横向扩展,就是将整个应用完整的复制到不同的节点。当应用的不同组件在扩展需求上存在差异时,微服务架构便体现出其灵活性,因为每个服务可以根据实际需求独立进行扩展。 本文主要围绕微服务的技术选型、通讯协议

SpringCloud分布式微服务云架构 第七篇: 高可用的分布式配置中心(Spring Cloud Config)(Finchley版本)

有些话、适合烂在心里 提交于 2019-12-12 18:20:45
上一篇文章讲述了一个服务如何从配置中心读取文件,配置中心如何从远程git读取配置文件,当服务实例很多时,都从配置中心读取文件,这时可以考虑将配置中心做成一个微服务,将其集群化,从而达到高可用,架构图如下: 一、准备工作 继续使用上一篇文章的工程,了解springcloud架构可以加求求:三五三六二四七二五九创建一个eureka-server工程,用作服务注册中心。 在其pom.xml文件引入Eureka的起步依赖spring-cloud-starter-netflix- eureka-server,代码如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.forezp</groupId> <artifactId>config-server<

为什么说即便是新手,也应该学习微服务?

99封情书 提交于 2019-12-12 16:50:15
微服务是当下非常火的话题,出门遇见同行,不会点微服务你可能都不好意思跟别人打招呼,企业的招聘信息中也越来越多地出现对于微服务架构能力的要求,不会点微服务找工作别说有优势了,先被别人落下一大截。可以说微服务架构已经成为后端开发人员的必备技能。 01 什么是微服务 维基百科上给出的定义是:微服务(Microservices)是一种软件开发技术,是面向服务的架构(Service-Oriented Architecture,SOA)的变体,微服务架构将应用程序组成一系列松散耦合的服务集合。在微服务体系结构中,服务是细粒度的,协议是轻量级的。 传统开发模式下,绝大部分的 Web 应用都是采用单体架构的风格来进行构建的,这意味着 Web 应用是作为单个可部署的软件制品进行交付的,所有的接口、业务逻辑、持久层都被打包在一个 Web 应用中,并且部署在一台服务器上。这种开发模式会带来诸多不便,大多数情况下,一个应用程序是交由多个团队来协同开发的,每个开发团队负责各自不同的模块,并且会有自己的定制组件来服务对应的客户。 问题就出在这里,随着应用程序的规模和复杂度不断增长,多个团队协同开发一个单体应用程序会变得越来越困难、越来越复杂,假设某个团队需要修改接口,那么其他团队与之对应的代码也需要修改,同时整个应用程序都需要重新构建、测试、部署。 微服务架构就是为了解决上述问题而生的,它的本质在于分布式

CanFestival移植到STM32F103

北战南征 提交于 2019-12-12 14:16:24
CanFestival移植到STM32F103 分类专栏: STM32 CANOpen 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/lushoumin/article/details/88546785 收起 1.创建工程 2.将CanFestival源码,拷贝到工程目录 3.删除其它架构和编译器的代码 查看include文件夹发现没有cortex-m3架构,因此我们这里借鉴AVR架构进行修改 将AVR文件夹重命名为STM32,并删除其它架构文件夹 打开STM32文件夹,将里面avr相关的文件删除,我们用的开发环境是MDK,因此将iar相关文件也删了 打开src文件夹,将其它架构、编译器和系统的文件给删了 4.将CanFestival文件添加进工程 添加好之后,编译出现错误,config文件中包含了很多iar相关头文件 将这些头文件删除 重新编译,依然存在错误,提示有很多函数没有定义 先解决start_and_seek_node和start_node的问题,打开def.c文件发现这两个函数定义了 其实,这是MDK开发环境的问题,不要太纠结这个问题,把inline删掉就好了 然后重新编译,还剩下三个错误canSend