架构

微服务架构~BFF和网关

你。 提交于 2020-01-07 10:06:05
介绍 BFF(Backend for Frontend)和网关Gateway是微服务架构中的两个重要概念,这两个概念相对比较新,有些开发人员甚至是架构师都不甚理解。 本文用假想的公司案例+图示的方式,解释BFF和网关是什么,它们是怎么演化出来的。希望对架构师设计和落地微服务架构有所启发。 服务化架构V1 我们先把时间推回到大致2011年左右。假设有一家有一定业务体量的电商公司A,在这个时间点它已经完成单块应用的解构拆分,内部SOA服务化已经初步完成。这个时候它的无线应用还没有起步,前端用户体验层主要是传统的服务端Web应用,总体服务化架构V1如下图所示。 服务化架构V2 时间转眼来到2012年初,国内的无线应用开始起风,A公司也紧跟市场趋势,研发自己的无线原生App。为了能尽快上线,公司的架构师提出如下V2架构,让App直接调用内部的服务: 这个架构有如下问题: 无线App和内部微服务强耦合,任何一边的变化都可能对另外一边造成影响。 无线App需要知道内部服务的地址等细节。 无线App端需要开发大量的聚合裁剪和适配逻辑: 聚合 :某一个功能需要同时调用几个后端API进行组合,比如首页需要显示分类和产品细节,就要同时调用分类API和产品API,不能一次调用完成。 裁剪 :后端服务返回的Payload一般比较通用,App需要根据设备类型进行裁剪,比如手机屏幕小

聊聊视图层切面实现方案

我的未来我决定 提交于 2020-01-07 07:20:09
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 前面发过一篇 《谈谈应用层切面设计》 , @HulkZ 说看了好几遍也没看懂,然后我又拉他到小黑屋面壁思过了好几次;也有人关心个性与扩展性如何得到平衡;也有人说,悠然就会扯淡,如何实现呢?那么今天继续来扯扯淡看看如何实现。 需求由来 在页面的某一个固定区域内,根据配置动态的增加新的功能。 新增功能元素可以增量添加,不影响原有功能,无时序问题。 支持模块化,自动加载配置。 可以自定义功能元素展现顺序。 满足各种功能模块的数据调用。 ##实现思路 为了实现上述需求我们需要在前端页面上设计一种扩展机制,就像在页面上埋下一个“桩子”,一个个功能在需要的时候就往里放,界面上就加载这些功能;当不需要的时候,从里面拿出来,当然需要做到各个功能模块是高内聚低耦合。 从平台的角度上来说就是可以通过配置的方式往某个扩展点不断的添加新内容。而这个扩展点里的内容是有由各个功能模块组合而成,在加载显示的时候根据配置显示的顺序而加载。各个功能模块上高内聚,页面风格各自保持一致。 扩展点的配置可以放到XML文件中,各个功能模块有自己的配置文件,在框架启动过程中自动整合加载相关的配置文件,从而实现自动装配,同时也实现了增量添加功能模块。 在扩展点的调用要做到输入参数的统一调度,可以把公用的参数提到接口上,同时也要兼顾一些功能点的额外需求

从象牙塔学生到美团开发社畜,工作一年,谈谈经验及感想

喜欢而已 提交于 2020-01-07 03:28:13
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 前言 2019,不知不觉已经给上海某厂搬砖一年多了。打开牛客讨论区,看着大家从投简历、跑面试、刷面经、选Offer……两年,回到更加热闹的讨论区也丝毫不感到陌生。 2018年入职某厂后,回牛客只发过几次内推帖,也推了不少同学🤣。这次回来想给即将成为社畜走向人生巅峰的大家写点东西,无奈腹中无诗书,不知从何下笔,只得拼凑一些文字,碎碎道来。 简介 本人2018年本科毕业入职上海某厂从事基础架构已逾一年,先后负责公司中间件与治理系统的开发。由于是在基础研发部门,日常的工作与一般业务部门有些出入,本文主要给大家分享一下。如果有对基础研发感兴趣的同学可以私聊我哈~ 关于工作 技术体系 在学校的开发真的很随心所欲,想用啥用啥。 但企业里一般都有严格的规范,作为一颗螺丝钉,我们只能选择融入。 比如我做SDK开发时,为了考虑兼容性,必须使用JDK7开发(大学时就用8了没想到这辈子还有机会用7。。。)。以前喜欢用开源组件换着用,现在企业开发一般有统一组件,比如消息必须用Kafaka,配置中心必须用zookeeper等。甚至对于变量的命名,都要与团队保持一致。 大厂一般还会有一大堆自研组件,比如阿里的sofa,美团的cat,这些组件可能在外面完全没有机会接触,都需要慢慢上手。甚至很多时候觉得自己比新员工的唯一优势就是

闲鱼架构如何一招提效30%?Flutter+Serverless 研发实践公开

眉间皱痕 提交于 2020-01-07 01:44:47
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 点击这里,查看 具体收益与效果等更多重要内容 简介 :Serverless(无服务架构)被誉为下一代云计算,自概念推出以来,因为能带来研发交付速度提升与成本的降低在业内异常火爆。闲鱼客户端基于Flutter进行架构演进与创新,通过Flutter统一Android和iOS双端提升研发效能之后,希望通过Flutter+Serverless 解决各角色间存在大量的协同,导致整体研发效率低,移动端离业务越来越远,服务端没有时间做底层领域沉淀的问题,从而进一步提升整体研发效率。 研发架构的演进 接下来我们带着这里两个问题回顾前后端研发架构演进的历史。 PC互联网早期没有还没有前后端的概念,此阶段单个业务需求通常一个开发人员可以完成研发,前端网页与后端逻辑都写在一个工程中。随着业务越来越复杂,原本开发者负责前后端研发已经变得效率低下,此阶段随着移动互联网的爆发,服务端需要服务与PC、Android、iOS等多种前端。 服务端总是有一个疑问:服务端设计接口时,是应该面向 UI,还是应该面向通用服务?一个方案是抽取一部分服务端做 BFF(Backend For Frontend服务于前端的后端),作为前后端之间的适配层,核心是解决数据的聚合与编排,重新探索更合理的分层协作模式。 服务端写BFF带来新的问题

支付参考架构

若如初见. 提交于 2020-01-06 23:17:09
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 参考架构 一般来说,支付系统典型架构会包含如下模块: http://doc.cocolian.cn/essay/payment/2016/08/08/payment-arch/ 来源: oschina 链接: https://my.oschina.net/dyyweb/blog/3151418

Docker支持多架构

落花浮王杯 提交于 2020-01-06 19:43:47
Docker支持多架构 注: 要求19.03以上版本(以下的不支持,Ubuntu 18.04的docker默认版本为19.03) 创建支持多架构的docker image (加buildx命令) export DOCKER_CLI_EXPERIMENTAL=enabled (作用是启用buildx) docker run --rm --privileged docker/binfmt:820fdd95a9972a5308930a2bdfb8573dd4447ad3 (注册ARM架构) cat /proc/sys/fs/binfmt_misc/qemu-aarch64 (确保enabled) docker buildx create --driver docker-container --use docker buildx inspect --bootstrap docker buildx ls (此时会多出来arm、arm64、ppc64le等) docker buildx build --platform linux/arm/v7,local --load -t ming:1.0 . 来源: 51CTO 作者: yangzhimingg 链接: https://blog.51cto.com/yangzhiming/2459368

微架构、指令集架构与汇编语言的关系

和自甴很熟 提交于 2020-01-06 18:57:43
最近老是碰到x86 IA32 MIPS什么的对应的汇编又是有好几种,感觉很迷。遂查资料理清这些个概念如下(大部分内容来自维基百科,如有错误谢指正!) 微架构、指令集架构和汇编语言这三者的关系大概是这样的,我们分别来介绍下 指令集 指令就是要计算机执行某种操作的命令。 从计算机组成的层次结构来说 指令分为微指令(微程序级的指令,属硬件)、宏指令(若干机器指令组成的 属软件)和机器指令(二者之间 简称指令)。 我们这里只讨论机器指令,每一条机器指令指令可以完成一个独立的算术运算或逻辑运算操作(如加减移位等)。 一台计算机中所有机器指令的集合指令集。它存在于CPU内部,对CPU运算进行指导和优化。 从指令集来说,计算机分为我们熟悉的 CISC(复杂指令集计算机)和 RISC(精简指令集计算机)。这两种的设计理念和优缺点各不相同,这里不再展开。 微架构 微架构,是处理器核心的实现方式,是 将一种给定的指令集架构在处理器中执行的方法(指令集的实现)。 通常认为只有具备独立的微架构研发能力的企业才算具备了CPU研发能力。 指令集架构(处理器架构) 是计算机体系结构中与程序设计有关的部分,包含了基本数据类型,指令集,寄存器,寻址模式,存储体系,中断,异常处理以及外部I/O。指令集架构为汇编语言的设计师和编译器所见。 几种常见的架构(详细内容和异同网上的介绍很多) x86 的32位 -> IA32

等级保护2.0安全架构介绍

房东的猫 提交于 2020-01-06 15:41:35
等级保护 2.0 安全架构介绍 等级保护 2.0安全架构介绍 基于 “ 动态安全 ” 体系架构设计,构筑 “ 网络 + 安全 ” 稳固防线 “等级保护2.0解决方案”,基于“动态安全”架构, 将网络与安全进行融合,以合规为基础,面对用户合规和实际遇到的安全挑战,将场景化安全理念融入其中,为用户提供 “一站式”的安全进化。 国家网络安全等级保护工作进入 2.0时代 国家《网络安全法》于 2017年6月1日正式施行,所有了网络运营者和关键信息基础设施运营者均有义务按照网络安全等级保护制度的要求对系统进行安全保护。随着2019年5月13日《GB/T 22239-2019 信息安全技术 网络安全等级保护基本要求》标准的正式发布,国家网络安全等级保护工作正式进入2.0时代。 等级保护 2.0关键变化 “信息安全”→“网络安全” 引入移动互联、工控、物联网等新领域 等保 2.0充分体现了“一个中心三重防御“的思想。一个中心指“安全管理中心”,三重防御指“安全计算环境、安全区域边界、安全网络通信”,同时等保2.0强化可信计算安全技术要求的使用。 被动防御 →主动防御 等级保护 2.0解决方案拓扑结构设计 安全管理中心 大数据安全 (流量 +日志) IT运维管理 堡垒机 漏洞扫描 WMS 等保建设咨询服务 建设要点 对安全进行统一管理与把控 集中分析与审计 定期识别漏洞与隐患 安全通信网络

从此重构

我与影子孤独终老i 提交于 2020-01-05 06:04:38
设计是如此重要,那么开发者的基本设计能力与素质又从何下手来培养呢? 最好的办法,就是请个老师。从框架中了解,从系统中实现,从书文中汲取。然而,设计能力的提升绝非一朝一夕之功, 软件 开发中的设计大师,往往必须具备多年的修行方可称之为“架构师”。 一个在简历中轻描淡写的“ 10 年软件设计经验”,并非是所有软件人都能修炼成的真功夫,这里没有任何虚情假意可言。在一个项目的实现过程中,逐渐了解什么是对象、什么是对抽象 编程 、设计模式是如何应用在实际的系统架构、设计原则到底是什么秘密武器,而重要的是完成一个软件项目,对于更多人来说是认识一种软件开发的科学流程。这种体验,才是难能可贵的经验。在设计的广义概念里,几个必需的概念是应该首先被了解和认知的,以排名不分先后的原则罗列,它们大概包括: · 面向对象 ( Object-Oriented ),关于面向对象没有必要重复嚼舌了,本书的第 1 章“ OO 大智慧”中对 .NET 的面向对象进行了有别于其他专著的介绍,除了以实例突出面向对象之思想大成,还以浓墨铺陈了 .NET 是如何在底层 技术 上来实现继承、多态和接口映射等机制,从而使读者可以更加有效和深刻地把握面向对象之精髓。 · 面向服务 ( Service Oriented ), SO 至少是个时髦的话题, WCF 伴着 .NET 3.5 的发布,一个一统江湖的面向服务的基础架构横空出世

从此重构

耗尽温柔 提交于 2020-01-05 06:04:17
从此重构 设计是如此重要,那么开发者的基本设计能力与素质又从何下手来培养呢? 最好的办法,就是请个老师。从框架中了解,从系统中实现,从书文中汲取。然而,设计能力的提升绝非一朝一夕之功,软件开发中的设计大师,往往必须具备多年的修行方可称之为“架构师”。 一个在简历中轻描淡写的“ 10 年软件设计经验”,并非是所有软件人都能修炼成的真功夫,这里没有任何虚情假意可言。在一个项目的实现过程中,逐渐了解什么是对象、什么是对抽象编程、设计模式是如何应用在实际的系统架构、设计原则到底是什么秘密武器,而重要的是完成一个软件项目,对于更多人来说是认识一种软件开发的科学流程。这种体验,才是难能可贵的经验。在设计的广义概念里,几个必需的概念是应该首先被了解和认知的,以排名不分先后的原则罗列,它们大概包括: · 面向对象 ( Object-Oriented ),关于面向对象没有必要重复嚼舌了,本书的第 1 章“ OO 大智慧”中对 .NET 的面向对象进行了有别于其他专著的介绍,除了以实例突出面向对象之思想大成,还以浓墨铺陈了 .NET 是如何在底层技术上来实现继承、多态和接口映射等机制,从而使读者可以更加有效和深刻地把握面向对象之精髓。 · 面向服务 ( Service Oriented ), SO 至少是个时髦的话题, WCF 伴着 .NET 3.5 的发布,一个一统江湖的面向服务的基础架构横空出世