首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Golang语言社区

    服务器 数据库设计技巧--2

    WHERET2.C2=T1.C2>0) 用下面的语句替换: SELECT SUM(T1.C1) FROM T1WHERE EXISTS( SELECT * FROM T2 WHERE T2.C2=T1. C2) 两者产生相同的结果,但是后者的效率显然要高于前者。 如果你想校验表里是否存在某条纪录,不要用count(*)那样效率很低,而且浪费服务器资源。可以用EXISTS代替。 2、表是行的集合。那么如果表名已经能够很好地说明其包含的数据信息,就不需要再添加体现上面两点的后缀了。 2.对于字段命名,采取和表命名一样的规则,个人习惯的命名规则是:表名+字段名。

    1.8K90发布于 2018-03-23
  • 来自专栏后端系统和架构

    服务系列 2:微服务化框架的模型和治理能力设计

    服务的治理:服务提供方的管理、服务使用方的管理、服务依赖的管理、服务的调用管理、服务的注册和发现、服务的部署和升级、服务的版本化管理 2. 2. 弱一致性 • 如果对一致性要求不高,可以选择以 DNS 为基础的方案。 服务负载均衡 路由算法 服务负载均衡,一般情况下,是会和服务发现放在一起设计的,因为服务发现后,紧接着,就是要对服务进行路由,也就是服务的负载均衡,他们一般是作为一个整体系统来设计。 3-2、微服务框架的扩展能力 API 接入层网关 微服务需要一个统一的 API 网关,负责外部系统的访问操作。 3-2、微服务体系下的管理平台 服务编排管理平台 在之前的文章里面,我们谈到,微服务和容器化结合是必然趋势,在当下,容器化平台基本都是采用 K8s ,那么基于 K8s 平台,我们的服务编排当然就需要围绕

    1.5K10编辑于 2023-03-01
  • 来自专栏IT开发技术与工作效率

    服务设计

    服务设计原则: 可复用,合约标准化,松耦合,高内聚,无状态,可发现,可组合 服务识别方法: 角色分析,场景梳理最小可用,用户服务,应用服务(横向按应用调用顺序,纵向按用户服务),系统能力分析,前置依赖优先后置依赖同版本 封装: (定语)+业务行为(动词)+业务对象(名词)+服务类型 业务服务 组件服务ACS(本应用) 对象服务BOS(规则逻辑) 不可同层互调 预处理,权限控制,组合服务,原子服务,组包返回 需求受理,首次调用,工作量优先 易用性:客户不可见不做参数 通用性:兼容多接入、多类型、多产品 按动词封装 业务对象并列,需求规则独立性,包含时拆大为小,业务对象的属性不能独立封装成服务 正反交易用同一服务的不同方法或标志

    69820发布于 2018-10-18
  • 来自专栏yeedomliu

    《微服务设计》第 2 章 演化式架构师

    2 章 演化式架构师 2.1 不准确的比较 架构师的一个重要职责是,确保团队有共同的技术愿景,以帮助我们向客户交付他们想要的系统。 在某些场景下,架构师只需要和一个团队一起工作,这时他们等同于技术引领者 ---- 2.2 架构师的演化视角 因此架构师必须改变那种从一开始就要设计出完美产品的想法,相反我们应该设计出一个合理的框架,在这个框架下可以慢慢演化出正确的系统 原则最好不要超过 10 个,或者能够写在一张海报上,不然大家会很难记住 Heroku 的 12 Factors(http://www.12factor.net)就是一组能够帮助你在 Heroku 平台上创建应用的设计原则 如果你的断路器依赖于 HTTP 返回码,并且一个服务决定使用 2XX 作为错误码,或者把 4XX 和 5XX 混用,那么这种安全措施就没什么意义了。 对以下几种请求做不同的处理可以帮助系统及时失败,并且也很容易追溯问题 (1)正常并且被正确处理的请求 (2)错误请求,并且服务识别出了它是错误的,但什么也没做 (3)被访问的服务宕机了,所以无法判断请求是否正常

    60430发布于 2019-09-28
  • 来自专栏程序猿的大杂烩

    表格设计2

    使用自表一对多设计这个表格,因为如果使用多个表格的话,需要增删的情况下就需要改动表格的结构了。所以使用自表一对多的方式,自己这张表的主键对应着自己这张表的外建。 代码示例: ? 例题2: ? 表格设计: 在sqlyog里我们可以通过此工具设计表格时建立表格之间的映射关系: ? 点击进入此界面后右键选择Add Tables...或者Create Table可以添加表格和创建表格: ? 一对一: 表格一对一设计方式有两种,一种是主键对应着关系表的主键,另一种方式是主键对应着关系表设置了唯一索引的外建。 一对多: 一对多关系的表格设计也有两种方式,一种是自表的一对多,第二种是主键对应关系表的外键。 自表一对多: ? 主键对应关系表的外键一对多: ? 多对多: 多对多的表格设计方式是使用一张关系维护表来维护其他表之间的映射关系。 ?

    80420发布于 2020-09-23
  • 来自专栏音视频专栏

    文件服务设计

    1.3 术语 腾讯云Cos系统 虚拟文件 2.调研分析 2.1 基本目标 这里的文件服务有几个层面的含义,分别是管理文件服务,操作文件服务。 管理文件服务 (1)划分文件存储的目录 (2)管理文件存储的位置 (3)定义目录的操作性,如是否可删除等 操作文件服务 ( 以此作为参考,一方面作为接口设计的参考,一方面来用来验证我们的文件服务是否适应多变的业务场景。 3.设计 3.1 设计目的 文件服务的根本目的是为APP提供统一、简洁、方便的文件操作的接口,为不同业务应用服务。 image.png 3.3 接口设计 (1)文件服务调用的基本流程 image.png (2)接口类关系 image.png 这里IFileService使用了IFileSystem

    3K151发布于 2019-07-02
  • 来自专栏java达人

    与我一起学习微服务架构设计模式2服务的拆分策略

    服务架构是一种架构风格 将应用程序构建为松耦合、可独立部署的一组服务 服务 服务是一个单一的、可独立部署的软件组件,它实现了一些有用的功能。 为应用程序定义微服务架构 识别系统操作 1、创建由关键类组成的抽象领域模型,这些关键类提供了用于描述系统操作的词汇表(可以分析用户故事和场景中频繁出现的名词为切入点) 2、定义系统操作(可以分析用户故事和场景中的动词为切入点 微服务架构下,每个限界上下文对应一个或一组服务。 拆分的指导原则 单一职责原则: 改变一个类应该只有一个理由。 在设计服务架构时,设计小的,内聚的,仅仅含有单一职责的服务。 在设计服务时,把根据同样原因进行变化的服务放在一个组件内。这样可以控制服务的数量,当需求发生变化时,变更和部署也更容易。 拆分单体应用为服务的难点 1、网络延迟 解决方案是实施批处理API,或者把多个相关的服务组合在一起,用函数代替进程间通信 2、同步进程间通信导致可用性降低 可以使用异步消息消除同步调用产生的紧耦合 3

    1.3K12发布于 2019-10-15
  • 来自专栏全栈程序员必看

    服务降级设计

    实际系统运维中会出现某点的流量高峰,该时间有些可以预计,如双十一,有些不能预计,如某明星大爆料 等等,那么对着此类情况加设备等不能满足要求或者不能立刻满足邀请的时候,就需要对服务进行降级操作。

    1.9K20编辑于 2022-08-24
  • 来自专栏腾讯大讲堂的专栏

    服务设计思维

    一、什么是服务设计 说到“服务设计”这个词,相信很多设计师都并不陌生,它存在于我们生活的方方面面中,大到城市交通系统,小到银行柜台服务,都充满着服务设计的影子。 为了能更好的理解服务设计思维,我们需要先接触一些与服务设计相关的关键词: 在服务设计中,除了顾客、服务提供者、服务设计者这三类显而易见的角色之外,还有一个比较重要的角色概念,叫做 利益相关者 。 2. 共同创造 由于顾客的类型多种多样,不同的顾客的需求与期待也有不同。 利益相关者地图能帮助我们站在更加宏观的角度思考问题,思考所有利益关系者所带来的影响,而不仅仅着眼于顾客和服务提供者本身。 2. 顾客旅程地图 顾客旅程地图是服务设计中应用非常广泛的重要工具。 第2条分界线是非常关键的 可见度线,这条线把顾客能看到的服务行为与看不到的分开。这条线还区分了服务提供者的前台与后台工作。 第3条线是内部活动线,用以区分服务人员的工作和实施服务之前的内部工作。

    2.6K92发布于 2018-03-01
  • 来自专栏程序员升级之路

    加密服务设计

    为什么要做加密服务,最近GDPR对个人数据查的很严,如果违反规定,罚款是很大的,大部分开发的同学是没太多安全意识的,说不定哪天因为系统漏洞导致数据被泄露出去了。 ,如果要设计一个加密服务,大家会怎么设计呢? 任何一个系统的设计都必须要代入业务场景中,我们从用例开始分析具体的业务场景: ? 用例分2类: 一类是针对业务系统的,每个业务系统的需求就是加密和解密。 数据库字段在其上的操作有:查询,添加、更新、删除,对于加密服务来说,需要加密指定的字段,并且可以对其进行解密;另外针对加密字段还可以查询,这个是一个难点,下面再讲。 ,这2种情况都需要能被解密出来 。

    1.4K40发布于 2020-09-11
  • 来自专栏hotarugaliの技术分享

    服务设计原则

    策略的模块化和集中化 结构化标准 其他的设计原则也会直接影响到合约的定位、设计以及最终的使用 2.3 合约与服务设计 数据表示标准化和转换的避免 在对服务记性集成时,统一的数据结构减少转换环节 标准化与粒度 标准化带来合适的粒度 服务级别的粒度通常受到服务模型的选择的影响 设计标准引入或改变服务操作的粒度 设计标准引入或改变数据的粒度 标准化服务合约与服务模型 以不同的标准适应不同的服务模型 通用类型模板 以实体为核心的服务 应用服务 以任务为核心的服务 为同一种服务模型应用同一组设计标准和命名惯例 服务合约设计的相关风险 版本化(服务合约的演化) 服务实施后,就可能建立起与服务消费者之间的依赖关系 RPC 技术以支持面向服务 Web Service 平台以及它的非专用通信框架 操作性系统层的技术性变化导致服务合约变化 开发工具缺陷 使用开发工具自动生成合约可能产生非标准化的服务合约 2. image.png 2.3 服务合约耦合的类型 “逻辑-合约”耦合(正面的、积极的耦合关系) 服务逻辑到服务合约的耦合 合约优先 首先设计合约,然后再设计底层的方案逻辑 允许对底层逻辑进行微调以支持服务合约

    98910编辑于 2022-02-28
  • 来自专栏huofo's blog

    设计模式(07)——设计原则(2

    该原则是作为一个指导思想来做的,其作用就是防止过度设计,但需要注意的是其是让你不做,但需要有可能要做的意识,提前留好拓展点,这样如果要做的时候,也可以快速跟上。 ** 后续会有一篇文章,来专门讲解如何在软件设计中,防止过度设计,但对对应该优化,该留好优化点如何实现。 这样的设计可能会导致以下问题, 当一个不知情的人看到这两段代码完成的任务是一样的,但采用的解决方式却是不一样的,则会想其的设计深意,以及不知道该用哪一个? true; } return validContainsA(temp); } 上述代码因为举的例子比较简单,应该能很简单的看出有一段代码被执行了两次,那么这样的设计违反了 迪米特原则 定义 迪米特原则是用来指导设计高内聚、低耦合代码的原则,因此我们先看一下什么是高内聚、低耦合。

    48920编辑于 2022-03-17
  • 来自专栏JavaEdge

    短链系统设计-服务设计

    2 Service 服务 - 逻辑块聚类与接口设计 该系统其实很简单,只需要有一个 service即可:URL Service。 由于 tiny url只有一个 UrlService: 本身其实就是个小的独立应用 也无需关心其他任何业务功能 方法设计: UrlService.encode(long_url):编码方法 UrlService.decode (long_url):解码方法 访问端口设计,当前有如下两种常用主流风格: GET / REST 风格 Return a http redirect resonse POST /data/shorten (不太推荐,不符合 REST 设计风格,但也有人在用) returh a short url 那么,你们公司的短链系统是选择哪种服务设计呢?

    59840编辑于 2022-09-14
  • 来自专栏高性能服务器开发

    2 网络游戏服务器开发框架设计介绍

    网络通信层,我会放到单独的SOCKET编程中去讲解,这里的主题是游戏的架构设计以及系统模块间的协同工作。 此系列开发教程,总共将分为10个模块:它们分别为 LoginGate服务器、 LoginServer服务器、 GameGate服务器、 GameServer服务器、 IMServer服务器、 AIServer 服务器、 CenterServer服务器、 BillingServer服务器、 WebServices服务器、 DBServer服务器。 当最终用户通过此服务完成登陆后,会与该服务断开连接,断开连接前,服务器会将数据上报给GameGate服务2 LoginServer:登陆服务器,仅作于内部服务与LoginGate进行连接,所有的最终用户请求由LoginGate过滤后,转发过来进行处理。

    5K33发布于 2018-07-25
  • 来自专栏John Wong's Blog

    Spring Boot Security 整合 OAuth2 设计安全API接口服务

    本文重点讲解Spring Boot项目对OAuth2进行的实现,如果你对OAuth2不是很了解,你可以先理解 OAuth 2.0 - 阮一峰,这是一篇对于oauth2很好的科普文章。 OAuth2概述 oauth2根据使用场景不同,分成了4种模式 授权码模式(authorization code) 简化模式(implicit) 密码模式(resource owner password Oauth2授权主要由两部分组成: Authorization server:认证服务 Resource server:资源服务 在实际项目中以上两个服务可以在一个服务器上,也可以分开部署。 Spring 0Auth2 己经设计好了数据库的表,且不可变。表及字段说明参照:Oauth2数据库表说明 。 configure(AuthorizationServerSecurityConfigurer security) throws Exception { /** * 配置oauth2服务跨域

    1.4K10编辑于 2021-12-23
  • 来自专栏程序员果果

    Spring Boot Security 整合 OAuth2 设计安全API接口服务

    本文重点讲解Spring Boot项目对OAuth2进行的实现,如果你对OAuth2不是很了解,你可以先理解 OAuth 2.0 - 阮一峰,这是一篇对于oauth2很好的科普文章。 OAuth2概述 oauth2根据使用场景不同,分成了4种模式 授权码模式(authorization code) 简化模式(implicit) 密码模式(resource owner password Oauth2授权主要由两部分组成: Authorization server:认证服务 Resource server:资源服务 在实际项目中以上两个服务可以在一个服务器上,也可以分开部署。 Spring 0Auth2 己经设计好了数据库的表,且不可变。表及字段说明参照:Oauth2数据库表说明 。 configure(AuthorizationServerSecurityConfigurer security) throws Exception { /** * 配置oauth2服务跨域

    2.4K40发布于 2019-05-16
  • 来自专栏雪胖纸的玩蛇日常

    2.Model设计

    Model设计 1.在settings.py中配置: AUTH_USER_MODEL='users.UserProfile' 2.在apps/users/models.py中: from django.db '女'), (3, '不详')), default=3, verbose_name='性别', help_text='1:男,2:女,3:不详 '非农业户口')), verbose_name='户籍性质', default=2, help_text='1:农业户口,2:非农业户口 初中,3:高中,4:中专,5:大专,6:本科,7:硕士,8:博士') hunyin=models.IntegerField(choices=((1, '未婚'), (2, '已婚'), (3, '离异'),(4,'丧偶')), default=2, verbose_name='婚姻状况', help_text='1:未婚,2:已婚,3

    58420发布于 2020-06-10
  • 来自专栏∑小熊猫的博客

    JAVA 设计模式系列(2) —— 设计原则

    Java 设计模式的相关原则 一、单一职责原则 单一职责原则: 应该有且仅有一个原则引起类的变更 单一职责可以简答的理解为,一个类或者对象,承担的只能应该尽可能单一。 单一职责用“职责”和“变化原因”来衡量接口或类设计得是否优良。但是“职责”的确定往往是无法度量的。 PS: 子类出现的地方,父类未必可以出现 在类中调用其他类时,务必使用父类或接口,如果不能使用,则说明类的设计已经违背了里氏替换原则(Liskov Substitution Principle,LSP 倘若一个接口过于臃肿,则可以将该接口分为多个接口 接口隔离原则需要保证的几个特性: 接口尽量要小: (在保证单一职责的情况小,尽量保证接口不过于臃肿) 接口要高内聚:(尽量减少与外界的交互,少公有,多私有) 定制服务 : (为特定的服务对象提供其所需的方法) 接口设计是有限度的: (接口的粒度越小,系统越灵活,但是结构也随之复杂起来) 五、迪米特法则 迪米特法则描述:一个对象应该对其他对象有最少的了解。

    50210发布于 2020-12-31
  • 来自专栏一Li小麦

    组件设计基础(2

    组件生命周期 早期的react设计了许多的生命周期钩子。 shouldComponentUpdate(根据true or false决定是否更新)->componentWillUpdate(即将feiqis)->render->componentDidUpdate 2. 中间那一层父组件根本用不上这个prop,但是依然需要支持这个prop,扮演好搬运工的角色,只因为子组件用得上,这明显违反了低耦合的设计要求。在flux和redux中我们会探讨如何解决这样的困局。 组件设计方法论 一些指导性原则: •组件尽可能通过props通信。不用context •组件属性需要有默认值,做好类型检查 •组件属性尽可能使用简单值。避免使用对象。

    92850发布于 2019-12-04
  • 来自专栏雪胖纸的玩蛇日常

    2.Models设计

    1.Models设计: 1.重构用户表: 1.在users/models.py中: from django.db import models from django.contrib.auth.models 用户' verbose_name_plural = verbose_name def __str__(self): return self.username 2. django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applie  2. 1.将DjangoUeditor包放到extra_apps目录下 2.在settings.py中注册DjangoUeditor ?    /', include('good.urls',namespace='goods')), path('ueditor/',include('DjangoUeditor.urls' )) ] 2.

    68420发布于 2020-05-18
领券