设计
zl1zl2zl3
这个作者很懒,什么都没留下…
展开
-
用户一键登陆,如何实现?了解一下!
我们先来看一下目前的一些登录方式:账号、密码登陆使用账号加密码是最传统的登录方式,可以说是简单粗暴的,一般也不会出现什么问题。缺点但这种方式要求用户要记住自己的账号和密码,也就是有一个记忆成本。用户为了降低记忆成本,很可能会在不同平台使用同一套账号密码。从安全角度考虑,一旦某个平台的账号密码泄露了,会连累到该用户使用的其他平台。另外,由于账号和个人身份无关,意味着同一个用户可以注册多个不同的账号,也就是可能会有恶意注册的情况发生。为解决这两个问题,理想的情况就是使用一个和用户身份转载 2020-06-15 19:37:03 · 1009 阅读 · 0 评论 -
点赞功能,用 MySQL?还是 Redis!
点赞功能是目前app开发基本的功能今天我们就来聊聊 点赞、评论、收藏等这些场景的db数据库设计问题,1. 我们先来看看场景的需求: 显示点赞数量 判断用户是否点过赞,用于去重,必须的判断 显示个人点赞列表,一般在用户中心 显示文章点赞列表 我们先看一下头条和微博的例子这两个都是具有顶级流量的,后端肯定有复杂的架构,我们今天只谈大众化的方案。2.1 mysql方案mysql方案, 随着nosql的流行,大数据的持续热点,但是mysql仍然不可.转载 2020-06-15 18:56:48 · 733 阅读 · 0 评论 -
分布式文件系统设计,该从哪些方面考虑?
分布式文件系统是分布式领域的一个基础应用,其中最著名的毫无疑问是 HDFS/GFS。如今该领域已经趋向于成熟,但了解它的设计要点和思想,对我们将来面临类似场景 / 问题时,具有借鉴意义。并且,分布式文件系统并非只有 HDFS/GFS 这一种形态,在它之外,还有其他形态各异、各有千秋的产品形态,对它们的了解,也对扩展我们的视野有所俾益。本文试图分析和思考,在分布式文件系统领域,我们要解决哪些问题、有些什么样的方案、以及各自的选择依据。过去的样子在几十年以前,分布式文件系统就已经出现了,以 Sun 在转载 2020-06-10 11:21:37 · 460 阅读 · 0 评论 -
我是如何用 Redis 做实时订阅推送的?
前阵子开发了公司领劵中心的项目,这个项目是以redis作为关键技术落地的。先说一下领劵中心的项目吧,这个项目就类似京东app的领劵中心,当然图是截取京东的,公司的就不截了。。。其中有一个功能叫做领劵的订阅推送。什么是领劵的订阅推送?就是用户订阅了该劵的推送,在可领取前的一分钟就要把提醒信息推送到用户的app中。本来这个订阅功能应该是消息中心那边做的,但他们说这个短时间内做不了。所以让我这个负责优惠劵的做了-.-!。具体方案就是到具体的推送时间点了,coupon系统调用消息中心的推送接口,把信息推转载 2020-06-06 11:02:14 · 510 阅读 · 0 评论 -
干掉 “User”
当你意识到你在项目开始时做的轻量、简单的设想竟然完全错了时,你已经用了六个月的时间投入到这个项目上。现在你需要解决这些问题,才能让这个系统继续运行下去,你发现你用在这个项目上的精力远远超出了你的预期,如果一开始就用正确的方式来做,就不会发生这样的事。今天,我要告诉你的是一个经常犯的错误,一个会给你带来无穷无尽的问题的单词,那就是“users”。这个单词有两个最基本的错误:1、对你的需求来说 “User” 几乎从来都不是一个好的描述。2、“User” 会导致一个基本的设计安全缺陷。“u转载 2020-06-02 16:12:31 · 223 阅读 · 0 评论 -
用代码来说明,为什么需要面向扩展的设计
在基本的面向对象编程中,你只能直接调用一个类的方法,而这些方法是由这个类的作者定义的,这对于面向用户设计的类来说是没有问题的。此外,在 20 - 30 年前,在大型标准库和开源库被大量复用之前,大部分代码通常是跟自己的代码中的类来一起工作的 —— 也就是你自己的团队或公司维护的代码。然而,在现代代码世界中,我们经常会使用其他人编写的类。业务逻辑通常大量使用包括字符串和集合等标准库功能、以及第三方库中的一些类,我们受到这些类提供的操作的限制。例如,当我们需要用破折号替换字符串中的空格时,我们会这样编写代码转载 2020-05-28 11:05:04 · 309 阅读 · 0 评论 -
美团点评效果广告实验配置平台的设计与实现
广告系统中,一个好的实验平台可以令算法、工程、业务的迭代更多、更快、更好。本文详细介绍了美团点评效果广告引擎团队结合自身业务实际,在广告实验配置平台上的实践。目前该平台已经在搜索广告中全面上线,支持线上所有实验需求。一. 背景效果广告的主要特点之一是可量化,即广告系统的所有业务指标都是可以计算并通过数字进行展示的。因此,可以通过业务指标来表示广告系统的迭代效果。那如何在全量上线前确认迭...转载 2019-11-30 15:32:25 · 434 阅读 · 0 评论 -
如何设计 QQ、微信、微博、Github 等等,第三方账号登陆 ?(附表设计)
前言:多账户登陆互联网应用当中,我们的应用会使用多个第三方账号进行登录,比如:网易、微信、QQ等,我们把此称为多账户统一登陆。通过这篇文章, 我想阐释多账户登陆的技术方案细节,以及相应的表设计,流程设计。我这里不会有具体代码实现细节,只要方案做的对,有思路,代码咋写都不会太烂。1. 创业初期归结为创业初期是因为这个时候用户量比较少,甚至还没有接入上面所说的其他第三方的账户系统,只是...转载 2019-08-14 17:11:06 · 656 阅读 · 1 评论 -
一次彻底搞透协议设计(没做过通讯底层也没有关系)!
系统设计,协议先行。大部分人不了解协议的设计细节,更多使用已有协议进行应用层设计,例如:(1)使用HTTP,设计get/post/cookie参数,以及json包格式;(2)使用dubbo,而不用去深究内部的二进制包头包体细节;无论如何,了解协议设计的原则,对深入理解系统通信非常有帮助。一、协议的分层设计所谓“协议”,是双方共同遵守的规则,例如:离婚协议,停战协议。协议有语...转载 2019-03-13 09:42:41 · 199 阅读 · 0 评论 -
如何设计一个良好的接口?
在设计接口时,有很多因素要考虑,如接口的业务定位,接口的安全性,接口的可扩展性、接口的稳定性、接口的跨域性、接口的协议规则、接口的路径规则、接口单一原则、接口过滤和接口组合等诸多因素,本篇文章将简要分析这些因素。一 规范性建议1.职责原则在设计接口时,必须明确接口的职责,即接口类型,接口应解决什么业务问题等2.单一性原则在明确接口职责的条件下,尽量做到接口单一,即一个接口只...转载 2019-03-01 08:27:42 · 216 阅读 · 0 评论 -
微服务的接入层设计与动静资源隔离
这个系列是微服务高并发设计,所以我们先从最外层的接入层入手,看都有什么样的策略保证高并发。接入层的架构画一个简图来讲包括下面的部分接下来我们依次解析各个部分以及可以做的优化。一、数据中心之外:DNS,HttpDNS,GSLB当我们要访问一个网站的服务的时候,首先访问的肯定是一个域名,然后由DNS,将域名解析为IP地址。我们首先先通过DNS访问数据中心中的对象存储上的静态...转载 2018-12-09 23:18:30 · 213 阅读 · 0 评论 -
如何设计优雅的API
导读:互联网的发展、Web 应用的整合、移动端的繁荣都离不开 Web API 这一幕后英雄的鼎力相助,本文就如何优雅的设计 Web API 从作者自我经验方面做出介绍,并通过举例对它们进行深入剖析, 最后总结出适用于 Web API 各个方面的普遍性规律。一、设计优美的 Web API 设计优美的 Web API 的重要性 本文的主题是讨论如何设计优美的 Web API 。这里“优...转载 2018-12-01 21:12:38 · 1031 阅读 · 0 评论 -
对一些架构设计原则的反思
在架构设计的领域,⼈们总结出了很多原则。这些原则的⽤语⼤都很简略,容易传播。但是提出这些原则的⼈,往往不会告诉你,为什么应该是这样的原则。哪怕说了背景,过了⼀段时间,听的⼈可能已经不知道原则提出⼈的初衷。⽽且这些原则,粗看起来是很有道理,可是在实践中,却往往不是这么回事,那么就沦为⼼灵鸡汤了。在看这些原则的时候,每个⼈都要形成⾃⼰的判断能⼒,不要⼈云亦云才好。以下是个⼈对⼀些设计原则的思考,...转载 2018-12-02 14:05:40 · 555 阅读 · 0 评论 -
分布式系统中处理参数配置的 4 种方案
一个系统中包含有各种各样的配置信息,如一个日志文件需要配置以下几个信息。 日志文件生成主目录 日志文件名称,不同的日志级别对应不同的文件 当前日志级别 还有其他各种业务参数、系统参数等,大多单一系统是直接把这些配置写死在配置文件中,当部署到测试、生产环境就再修改下配置文件,这样很容易出错,也不能灵活修改。还有就是系统变成分布式系统后,子系统越来越多,你要维护这些配置就...转载 2018-11-08 08:51:42 · 545 阅读 · 0 评论 -
消息队列设计的精髓基本都藏在本文里了
当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发的Notify、MetaQ、RocketMQ等。本文不会一一介绍这些消息队列的所有特性,而是探讨一下自主开发设计一个消息队列时,你需要思考和设计的重要方面。过程中我们会参考这些成熟消息队列的很多重要思想。本文首先会阐述什么时候你需要一个消息队列,然后以Push模型为主,从零开始分...转载 2016-07-20 11:37:23 · 14342 阅读 · 6 评论 -
RESTful API 设计指南
网络应用程序,分为前端和后端两个部分。当前的发展趋势,就是前端设备层出不穷(手机、平板、桌面电脑、其他专用设备......)。因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信。这导致API构架的流行,甚至出现"API First"的设计思想。RESTful API是目前比较成熟的一套互联网应用程序的API设计理论。我以前写过一篇《理解RESTful架构》,探讨如何理解这个概念。...转载 2016-07-01 14:22:53 · 299 阅读 · 0 评论 -
你的项目应该如何正确分层?
1.背景说起应用分层,大部分人都会认为这个不是很简单嘛 就controller,service, mapper三层。看起来简单,很多人其实并没有把他们职责划分开,在很多代码中,controller做的逻辑比service还多,service往往当成透传了,这其实是很多人开发代码都没有注意到的地方,反正功能也能用,至于放哪无所谓呗。这样往往造成后面代码无法复用,层级关系混乱,对后续代码的维护非常...转载 2018-11-03 08:41:12 · 534 阅读 · 0 评论