AIX Zing


  • 首页

  • 归档

  • 标签

  • 关于

  • 全栈计划

  • 搜索

从0开始学Java并发(二)——线程通信

发表于 2019-04-25 | 阅读次数

线程通讯

每个线程都有自己的内存空间(栈),这个空间存在于线程代码运行开始直至结束,期间若线程不与其他线程交互配合,几乎就没有价值。而交互配合,便涉及到线程间的通讯。暂且不表通讯前的安全问题,先熟悉下
有哪些常用的通信方式。


您的浏览器不支持 audio 标签。
阅读全文 »

SpringBoot配置分析

发表于 2019-04-22 | 阅读次数

SpringBoot 有N种Config方式

  • properties文件配置
  • yml文件配置
  • xml配置
  • 类配置
  • 注解配置
  • 配置中心

N多种,这里只介绍俩基础的,properties文件配置和yml文件配置

properties文件配置

配置形式如下

1
2
3
4
environments.dev.url=https://dev.example.com
environments.dev.name=Developer Setup
environments.prod.url=https://another.example.com
environments.prod.name=My Cool App

yml文件配置

配置形式

1
2
3
4
5
6
7
environments:
dev:
url: https://dev.example.com
name: Developer Setup
prod:
url: https://another.example.com
name: My Cool App

对比

yml层次清晰,虽然行数多一些,但实际代码并不比properties文件多,所以yml的配置越来越流行

孰优孰劣都不至于深究,习惯了好用即可

如何自定义配置

类配置

使用配置中心


喜欢请点个赞

转载请注明出处:https://www.jianshu.com/u/4915ed24d1e3

如有错误,请务必不吝指正。谢谢

我的博客:https://xzing.github.io/

07-SOA与微服务的区别

发表于 2019-04-14 | 阅读次数

SOA和微服务的区别

如果你是IT从业者,你可能听过SOA和微服务的争论,毕竟,现在微服务和敏捷开发应用非常流行。

首先,这两种架构听起来非常相似,他们跟单体应用架构有着明显的区别,单体应用是将所有服务集成到自身中。而这两种每个服务都各自负责一部分,两者对解耦都有一定程度的帮助

二者主要的区别就是服务范围。简而言之,面向服务体系架构(SOA)面向的范围更加企业化(范围更广),而微服务的范围更加应用化。

这里有一些基本的定义来区分(两者):

  • SOA 是面向企业级的架构,主要用来构建可重用,统一同步的服务API。帮助开发人员更快的构建,并集成其他系统的数据(更关心企业服务)

  • 微服务 是一种构建灵活,可扩展,可伸缩应用的一种架构。(更关心应用架构)


阅读全文 »

06-SOA架构介绍

发表于 2019-04-10 | 阅读次数

SOA Service-oriented_architecture

面向服务的体系结构(SOA)是一种软件设计风格,其中服务通过应用组件的形式,通过网络通信协议给其他组件提供服务。面向服务的体系结构的基本原则独立于厂商,产品和技术的。[1]服务是一个独立的功能单元,可以远程访问并独立操作和更新,例如在线检索信用卡对帐单。

根据SOA众多特征可以总结出4个属性:

  • 在逻辑上SOA表示有指定结果的业务活动
  • SOA是自包含的(自身是完整的范围)
  • 对调用者来说,SOA是个黑盒
  • SOA可以包含一些底层服务

SOA 6个核心价值

  1. 商业价值比技术战略更重要。
  2. 战略目标比项目特定的利益更重要。
  3. 内部可操作性比定制集成更重要。
  4. 共享服务比指定用途实现更重要。
  5. 灵活性比优化更重要。
  6. 进化精炼比追求初始完美更重要。

缺点

  1. 服务之间存在信息屏障
  2. 服务之间的网络调用代价比单体程序进程内调用更高,更加浪费资源
  3. 测试部署更加麻烦
  4. 服务间的职责迁移更加困难,可能涉及到多个团队,需要用另一种语言重新编写同一种功能,或适配不同的接口
  5. 服务拆分过细时会导致服务数量变多
  6. 事务分段提交是微服务的痛点,两次提交会导致参与的部分极度耦合,但是这种保持数据一致性的技术又必须存在
  7. 部署支持这些由不同工具、技术开发的微服务更加具有挑战性——工程师可能需要面临在不同工程中来回适应的问题

参考

wikipedia_Service-oriented_architecture
wikipidia_Microsercices
[1]”Chapter 1: Service Oriented Architecture (SOA)”. msdn.microsoft.com. Archived from the original on February 6, 2016. Retrieved September 21, 2016.


喜欢请点个赞

转载请注明出处:https://www.jianshu.com/u/4915ed24d1e3

如有错误,请务必不吝指正。谢谢

我的博客:https://xzing.github.io/

05-微服务架构小结

发表于 2019-04-08 | 阅读次数

微服务

简而言之,微服务架构风格是以一组小服务来开发单个应用程序的方法,每一个服务运行在自己独立的进程中并且使用轻量级的方法通信,通常是一个HTTP API接口。这些服务围绕相关业务范围构建并且由全自动化部署机器独立部署。这些服务只需要最低限度的管理,可以用不同的编程语言去编写并且使用不同的数据存储技术。 ————MartinFowler

架构特征

  • 服务组件化
  • 服务围绕业务设计
  • 以产品为中心的开发模式
  • 轻量级通讯机制
  • 去中心化治理
  • 去中心化数据存储
  • 故障处理可监控
  • 演进式设计
  • 基础运维自动化

微服务具有以下优势:

  • 开发简单
  • 技术栈灵活
  • 服务独立
  • 按需伸缩

面临的挑战:

  • 运维复杂度高
  • 面临数据一致性问题 | 分布式的复杂性
  • 集成测试困难
  • 服务间重复的代码
  • 监控更加困难
  • 通讯成本高

架构设计原则

  • 单一职责原则(边界明晰)
  • 服务自治原则
  • 轻量级通讯原则
  • 接口明确原则

喜欢请点个赞

转载请注明出处:https://www.jianshu.com/u/4915ed24d1e3

如有错误,请务必指正。谢谢

我的博客:https://xzing.github.io/

(译)微服务——martinfowler

发表于 2019-04-04 | 阅读次数

Microservice

将软件设计成一系列独立部署的服务的架构方式叫做【微服务】,这个词在过去的几年中越来越火爆。尽管目前尚没有对这种架构风格的明确定义,但是围绕组织结构、业务能力、自动化部署、终端结点的智能化程度,编程语言和数据的去中心化控制这几个方面,这种架构风格有着某些共同的特征。

新的架构名词

【微服务】——在软件架构拥挤的街道出现的又一个新词。尽管我们习惯性地投以这类事物轻蔑的一瞥,但是这个小小的词却描述了一种被发现越来越具有吸引力的软件架构风格。在过去的几年中,我们已经看到许多个项目使用了这种风格,目前为止这些项目的结果都是积极的,以至于对我的许多同事而言这已成为构建企业应用的默认风格。然而,令人沮丧的是,没有大量的信息明确指出微服务是什么以及我们如何实现它。

简而言之,微服务架构风格是以一组小服务来开发单个应用程序的方法,每一个服务运行在自己独立的进程中并且使用轻量级的方法通信,通常是一个HTTP API接口。这些服务围绕相关业务范围构建并且由全自动化部署机器独立部署。这些服务只需要最低限度的管理,可以用不同的编程语言去编写并且使用不同的数据存储技术。

若要解释清楚微服务风格,将它与单体风格(一个单个应用程序作为一个独立单元构建)对比将会很有帮助。企业应用程序通常由三个主要部分组成:一个客户端用户界面(由运行在用户机器上的浏览器中的HTML页面和javscript代码组合成),一个数据库(由多个插入到一种常见的,通常是关系型数据库管理系统中的数据表组合成),以及一个服务端应用程序。这个服务端应用程序将会处理HTTP请求,执行领域逻辑,从数据库获取和更新数据,并且选择和填充发送给浏览器的HTML视图。这个服务器端的应用程序就是单体——一个单一的可执行的逻辑。任何对这个系统的改动都需要重新构建和部署一个服务器端应用程序的新版本。

很自然地,这样的单体服务器是构建这样一个系统的一种方式。处理一条请求的所有逻辑都在一个单一的进程中运行,这允许你使用编程语言的基本功能将应用程序拆分成类、函数和命名空间。更谨慎的做法是,你可以在一个开发者的笔记本上运行和测试这个应用程序,并且使用一个部署管道来确保改动都被正确的测试并且部署到了生产环境中。你可以通过在一个负载均衡器后运行多个实例的方式来横向缩放这个单体应用。

单体应用可以被成功运用,但是渐渐地人们对单体应用感到不满——尤其是当越来越多的应用程序被部署到云端。任何改动都会牵一发动全身——哪怕是对应用程序一个小地方的改变都需要整个单体应用被重新构建和部署。随着时间的推移通常会很难保持一个良好的模块结构,使得控制变更仅影响模块内部变得越加困难。如要实现可伸缩,需要变动整个应用程序而不是应用程序的某一部分,这要求更多的资源。

阅读全文 »

从0开始学Java并发(一)——基本概念

发表于 2019-03-13 | 阅读次数

什么是多线程

进程:Process,系统级别的资源调度单位。相当于一个程序实例

线程:Thread,进程内的资源调度单位,在进程内运行的最小单位,有自己的计数器和内存堆栈结构。

阅读全文 »

04- SpringBoot and Spring Clould

发表于 2019-03-06 | 阅读次数

学习时的步骤
1.了解来历,概念,定义
2.使用方式
3.底层实现,原理

微服务到底是什么

首先 微服务 ≠ SpringBoot

“Microservices” became the hot term in 2014, attracting lots of attention as a new way to think about structuring applications. I’d come across this style several years earlier, talking with my contacts both in ThoughtWorks and beyond. It’s a style that many good people find is an effective way to work with a significant class of systems. But to gain any benefit from microservice thinking, you have to understand what it is, how to do it, and why you should usually do something else.

In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.

– James Lewis and Martin Fowler
https://www.martinfowler.com/microservices/

译:

“微服务”成为2014年的热门词汇,吸引了大量关注,成为构建应用程序的新的参考方式之一。
几年前我遇到这种架构方式,并与ThoughtWorks及其他人交流过。
许多优秀的人发现,微服务的方式是架构核心级别服务的有效风格。
但是从微服务思维中受益前,你必须了解它是什么,如何构建,以及为什么应该使用这种方式做系统架构。

简而言之:微服务架构是一种将程序分成多个小的子服务,每个服务运行在各自不同的进程中,服务之间通过轻量级通讯机制进行通信,通常是HTTP资源API。
这些服务通过围绕业务进行构建,并且可以通过某些自动部署机制进行独立部署。
这些服务可以使用不同的语言编写,使用各自的存储技术,并且只需要极少的中心化管理。

总结:

微服务是一种架构风格,广泛用于拆分模、业务。并且能够自动部署

————微服务课程学习笔记

03- SpringBoot and Spring Clould

发表于 2019-03-06 | 阅读次数

学习步骤:

  1. Spring Boot的构建与开发
  2. Spring Boot的启动
  3. Spring Boot的自动配置与注解

  1. Eureka的使用
  2. Eureka的执行流程与架构

  1. Ribbon的使用

  1. Feign的使用与架构原理

  1. Hystrix的使用与原理
  2. Hystrix的Fallback机制

  1. Zuul的使用
  2. Zuul的原理与源码分析

ps: 任何问题都可以通过增加一个中间层来解决


  1. Cloud Config的使用与Git支持
  2. 资源文件Web接口管理

  1. Sleuth链路追踪
    ….

————微服务课程学习笔记

02- SpringBoot and Spring Clould

发表于 2019-03-04 | 阅读次数

From configuration to security, web apps to big data – whatever the infrastructure needs of your application may be, there is a Spring Project to help you build it. Start small and use just what you need – Spring is modular by design.

从配置到安全,从Web应用到大数据 - 无论您的应用程序需要什么样的基础架构,都有一个Spring项目可以帮助您构建它。 从小处着手,只使用你需要的东西 - Spring是模块化的设计。

SpringBoot 表面上看起来非常非常简单,实际上内部是封装了一个完整的Web结构。一个软件框架复杂性是一定存在的。一种是把复杂沉淀到框架内部,方便使用。另一种是将复杂性交给开发者,方便定制化。

了解复杂性的好处:差错、模仿、定制

SpringBoot的好处:独立运行,免配置,集成第三方库

Spring Cloud是一系列软件的统称。具体可以参考官网:https://spring.io/projects/spring-cloud

Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems (e.g. configuration management, service discovery, circuit breakers, intelligent routing, micro-proxy, control bus, one-time tokens, global locks, leadership election, distributed sessions, cluster state).

Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁定,领导选举,分布式 会话,集群状态)

spring clould 用于分布式环境下

学习Spring的同时,需要客观对待Spring,既要学习优点,又要了解缺点

————微服务课程学习笔记

123…8
zing

zing


光荣在于平淡
艰巨在于漫长


无论我多早迎接这清晨
在路上
都会有人在
我以为别人还在梦乡
但无论什么时候
这个世界都比我快一步

76 日志
84 标签
© 2020 zing
转载请注明出处:xzing.github.io
Hexo主题 - NexT.Mist