架构

Android的架构主体演变

一世执手 提交于 2020-01-12 15:20:01
Android的架构主体演变 在过去Android一直在MVC、MVP中探索。在2019基本没有谁再去纠结这两个架构了,因为Android的Jetpack提供了MVVM架构,说到MVVM架构我第一时间想到刚刚毕业的时候,在WPF的window开发中使用到MVVM的数据绑定。如果你是一个初学者我的建议是直接忽略MVP架构,直接入门MVC,开发MVVM。 最佳架构 对于MVVM,google提供了Jetpack组件。成为Android最佳架构实践。可以通过以下网址学习和探索:https://developer.android.com/jetpack 。Jetpack组件已经植入了Android的SDK,从这一点可以看出最佳架构不是徒有空名的,那些还在观念意识上不接受的就快点转换思维吧。 学习Jetpack中的设计思想 公司的主体Android架构已经切换到了MVVM结构了,而且App运行良好,优势也渐渐凸显。在这里我和大家分享一下我眼中的Jetpack组件值得学习的切入点主要有两点:构建对象管理器、数据绑定。 构建对象管理器 对于对象的生成和销毁的管理一直以来都是各大架构的一个主题功能。归根结底就是一个工厂模式,在Jetpack中我们也看到这个设计模式的应用,在ViewModelProviders和RepositoryProviders。先不看这个两个类的实现

了解软件架构师

不羁岁月 提交于 2020-01-12 07:29:53
在不了解软件架构师是个怎样的东西,做什么工作的前提下,我所理解的是:软件架构师与桥梁建筑师,等一系列工程师是一样的,都是对一个项目进行分析处理,只是桥梁建筑师是对桥梁进行设计,软件架构师是对软件进行设计,有异曲同工之妙。 在上课时老师通过让我们观看《梦想改造家》来了解,这是一个房屋改造空间的节目,看过视频后,老师出了一份问卷。发现题目问的都是一些很细节的问题,比如视频中房屋做了哪些改动等。于是,根据这个我又认为软件架构师是一个需要抓住细节的职业。 刚刚阅读了一些《架构漫谈》几篇博客,又对软件架构师有了重新的认识。 软件架构师其实相当于是软件项目管理的主管,他负责设计与构筑公司的系统架构,对系统的重用、扩展、安全、性能、伸缩性、简洁等做系统级的把握。软件架构师还要跟踪架构的使用情况,以保证软件开发符合制定好的系统架构。他还负责进一步改进系统架构,以符合公司发展的业务要求。软件架构师还得给设计人员和开发人员提供系统架构的培训。这些就是一名软件架构师的职责目标。 那么,作为一名软件架构师的具体的职责有哪些呢?软件架构师的主要任务不是从事具体的软件程序的编写,而是从事更高层次的开发构架工作。他必须对开发技术非常了解,并且具有良好的组织管理能力。可以这样说,一个架构师工作的好坏,决定了整个软件开发项目的成败。其实,软件架构师的工作职责可以分为三点。首先最重要的是负责软件项目的测试

微服务的必要性

浪子不回头ぞ 提交于 2020-01-12 06:09:27
有一次在与客户交流过程中,客户提出“我们的系统遇到了很大的瓶颈,运行极慢,我们该怎么办?微服务之后能否解决慢的问题?” 相信大家也遇到过类似的问题,系统往往最初刚上线的时候运行的很好,甚至三五年都很好,但是随着时间的推移,业务与数据的增长使得我们的系统不再如初上线时那么流畅,变得非常臃肿(不灵活,庞大,效率低下)。我们该怎么办? 一、“协作”,通过扩充团队力量,实现快速响应,此方法如同蚂蚁搬家,通过团队协作实现效率提升。这也好比我们应用架构的集群化方案,单台扛不住,我们就多台的意思。但这并没有解决根本性问题。同时该方案对团队成员的能力要求非常高,要求团队成员能迅速融入,并快速上手。往往对于一个臃肿的大单体应用来说,团队成员又无法快速融入,快速上手。从而形成了矛盾体,所以我们一般会进行第二种方案。 二、“分解(分而治之)”,对当一个应用已经无法通过增加团队成员来提升效率的情况。我们势必会进行分解,将一个大应用拆成小应用。通过业务拆分,实现应用灵活可扩展,微小易控制,DevOps敏捷提升。这也就是我们常说的微服务架构。 微服务架构能否解决慢的问题?我们先不说微服务架构,我们先来谈慢的问题,应用为什么慢,到底是哪里慢呢?恰恰这也是微服务的一个核心要素——聚焦核心问题。对我们不应当讨论微服务的必要性,而应当讨论应用为什么慢? 对于应用变慢的总结: 1、硬件过时

spring架构

99封情书 提交于 2020-01-12 03:49:35
spring架构 Spring 最初的目标就是要 整合一切优秀资源 ,然后对外提供一个统一的服务。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式,如下图所示: 组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下: Spring 框架的功能可以用在任何J2EE服务器中,大多数功能也适用于不受管理的环境。Spring 的核心要点是:支持不绑定到特定J2EE服务的可重用业务和数据访问对象。毫无疑问,这样的对象可以在不同J2EE环境(Web或EJB)、独立应用程序、测试环境之间重用。 核心组件 主要jar组成 来源: CSDN 作者: Cv小码农 链接: https://blog.csdn.net/weixin_43694465/article/details/103873702

数据库和redis的一致性

守給你的承諾、 提交于 2020-01-11 15:06:15
之前的讲解,主要是在讲解redis如何支撑海量数据、高并发读写、高可用服务的架构 从这一讲开始,正式开始做业务系统的开发 商品详情页,缓存架构,90%是大量的业务(没有什么级数含量),10%最有级数含量的就是架构 1、上亿流量的商品详情页的多级缓存架构 采用三级缓存:nginx本地缓存+redis分布式缓存+tomcat 堆缓存的多级缓存架构           nginx 本地缓存 redis分布式缓存 tomcat web应用 堆缓存 实时性要求非常高的数据:库存(希望当库存变化的时候,尽可能更快将库存显示到页面上去,而不是等了很长时间,库存才反应到页面上去) 实时性要求不高的数据:商品的基本信息(名称、颜色、版本、规格参数、等等) 对于实时性较高的数据来说,采用MYSQL和redis缓存双写的方案,这样缓存的时效性最高 nginx+lua脚本 lua脚本作为代码,部署到nginx本地,做第一层的业务逻辑 2、多级缓存架构中每一层的意义 1)nginx本地缓存,扛的是热数据的高并发访问,大量的热数据的访问,即经常会访问的那些数据,就会被保留在nginx本地缓存内。 2)redis分布式缓存,扛的是很高的离散访问,支撑海量的数据,高并发的访问,高可用的服务 3)tomcat 堆缓存主要是扛redis大规模灾难的 3、最经典的缓存+数据库读写的模式:cache aside

Active Directory 域服务(AD DS)

南笙酒味 提交于 2020-01-11 03:17:03
本文内容 概述 工作组架构与域架构 名称空间(Namespace) 对象(Object)、容器(Container)与组织单位(Organization Units,OU) 域树(Domain Tree) 林(Forest) 概述 Active Directory 域服务(Active Directory Domain Services,AD DS),是一个提供用于组织、管理与控制网络资源的强大工具。在你创建并使用域时,有些必要知道关于域服务的一些概念、理念。 Active Directory Domain Services,其中 Directory,目录服务,在日常生活中经常看到,比如: Telephone Directory(电话目录),里边记录亲朋好友的姓名、电话、地址等数据; 计算的文件系统,里边记录文件的名称、大小、日期等数据,这是 File Directory(文件目录); 查号台; 百度搜索引擎。 目录服务就是让用户能很容易、迅速地查找到所需的文件。 Active Directory 的 Directory 则是用来存储用户帐户、计算机帐户、打印机与共享文件等对象,这些对象的存储位置都是目录数据库(Directory Database),而 Active Directory 负责提供目录服务的组件就是 Active Directory 域服务(AD DS),负责操作

Spring Cloud 分布式事务详解及LCN解决方案

你离开我真会死。 提交于 2020-01-10 20:55:35
在微服务如火如荼的情况下,越来越多的项目开始尝试改造成微服务架构,微服务即带来了项目开发的方便性,又提高了运维难度以及网络不可靠的概率. 在说微服务的优缺点时,有对比才会更加明显,首先说一下单体式结构 单体式架构 在单体式架构中,系统通常采用分层架构模式(MVC),持久化层、表示层,业务逻辑层。架构主要存在以下问题: 系统内部互相访问,耦合紧密导致难以维护; 各业务领域需要采用相同的技术栈,难以快速应用新技术(例如使用SSH很难向SSM改造); 对系统的任何修改都必须整个系统一起重新部署/升级; 在系统负载增加时,难以进行水平扩展; 当系统中一处出现问题,会影响整个系统; 为了克服以上缺点,微服务架构应运而生。微服务,又叫微服务架构。微服务就是一些协同工作的小而自治的服务. 微服务架构 优点: 1. 技术异构性 在不同的服务中,可以使用不同的技术来各自开发,只要保证服务间能相互协作即可 2. 弹性 当微服务中的某一个服务不可用时,不会影响整个系统,只会影响相关功能不可用 3. 扩展 易于扩展,使用小的多个服务,更加易于扩展新的功能 4. 简化部署 某个服务的更新部署,不需要重新部署整个应用 5. 可组合 通过组合多个服务,可以提供一些新的功能 6. 可替代 因为每个微服务都比较小,重新实现某一个服务或者直接删除该服务都是可操作的 缺点: 1. 复杂度高 微服务间通过REST

电商平台架构2

强颜欢笑 提交于 2020-01-10 20:51:43
1.电商案例原因 分布式大型网站,目前看主要有几类: 1.大型门户,比如网易,新浪等; 2.SNS网站,比如校内,开心网等; 3.电商网站:比如阿里巴巴,京东商城,国美在线,汽车之家等。大型门户一般是新闻类信息,可以使用CDN,静态化等方式优化,开心网等交互性比较多,可能会引入更多的NOSQL,分布式缓存,使用高性能的通信框架等。 电商网站具备以上两类的特点,比如产品详情可以采用CDN,静态化,交互性高的需要采用NOSQL等技术。 因此,我们采用电商网站作为案例,进行分析。 2 电商网站需求 客户需求: 建立一个全品类的电子商务网站(B2C),用户可以在线购买商品,可以在线支付,也可以货到付款; (1)用户购买时可以在线与客服沟通; (2)用户收到商品后,可以给商品打分,评价; (3)目前有成熟的进销存系统;需要与网站对接; (4)希望能够支持3~5年,业务的发展; (5)预计3~5年用户数达到1000万; (6)定期举办双11,双12,三八男人节等活动; (7)其他的功能参考京东或国美在线等网站。 客户就是客户,不会告诉你具体要什么,只会告诉你他想要什么,我们很多时候要引导,挖掘客户的需求。好在提供了明确的参考网站。因此,下一步要进行大量的分析,结合行业,以及参考网站,给客户提供方案。 需求管理传统的做法,会使用用例图或模块图(需求列表)进行需求的描述

一分钟弄懂什么是分布式和微服务

血红的双手。 提交于 2020-01-10 15:25:57
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 简单的说,微服务是架构设计方式,分布式是系统部署方式,两者概念不同 微服务是啥? 这里不引用书本上的复杂概论了,简单来说微服务就是很小的服务,小到一个服务只对应一个单一的功能,只做一件事。这个服务可以单独部署运行,服务之间可以通过RPC来相互交互,每个微服务都是由独立的小团队开发,测试,部署,上线,负责它的整个生命周期。 微服务架构又是啥? 在做架构设计的时候,先做逻辑架构,再做物理架构,当你拿到需求后,估算过最大用户量和并发量后,计算单个应用服务器能否满足需求,如果用户量只有几百人的小应用,单体应用就能搞定,即所有应用部署在一个应用服务器里,如果是很大用户量,且某些功能会被频繁访问,或者某些功能计算量很大,建议将应用拆解为多个子系统,各自负责各自功能,这就是微服务架构。 那么分布式又是啥? 分布式服务顾名思义服务是分散部署在不同的机器上的,一个服务可能负责几个功能,是一种面向SOA架构的,服务之间也是通过rpc来交互或者是webservice来交互的。逻辑架构设计完后就该做物理架构设计,系统应用部署在超过一台服务器或虚拟机上,且各分开部署的部分彼此通过各种通讯协议交互信息,就可算作分布式部署,生产环境下的微服务肯定是分布式部署的,分布式部署的应用不一定是微服务架构的,比如集群部署

Apollo配置中心(一)架构演进

你离开我真会死。 提交于 2020-01-10 11:37:26
笔者在工作中遇到如下问题,随着程序功能越多,配置文件不断增加,一些功能的开关、服务器地址、接口地址、不同环境的一些配置文件不同,这些在每次发布不同环境、更新项目时都比较繁琐,后来学习微服务时接触到了Spring Cloud Config配置中心,用了一段时间发现比之前方便不少,但是还是比较繁琐和麻烦,而且功能还达不到生产级,只能小规模场景下使用,在中大规模企业场景下不建议采用。后来了解到携程Apollo配置中心,Apollo支持完善的管理界面,支持多环境,配置变更实时生效,权限和配置审计等多种生产级功能,而且在携程到微服务架构体系中也运用了这个,在国内众多互联网公司也有落地案例,就开始去接触了解。最后结合工作和学习的一些经验分享给大家Apollo的入门使用和一些走过的坑,本篇文章主要介绍了Apollo架构体系、Apollo运行原理、Apollo配置中心概念、特性简单介绍。 部分资料来源: 携程Apollo配置中心架构深度解析: https://www.cnblogs.com/davidwang456/articles/9154260.html Apollo配置中心简单介绍: https://blog.csdn.net/Michael_HM/article/details/79412461 推荐博客: Apollo架构体系、Apollo运行原理、Apollo配置中心简单介绍: