Concurrent와 Parallel의 개념에 대한 내용입니다..
전에 http://choiwonwoo2.tistory.com/ 님께서 concurrent와 parallel의 차이에 대해서 설명해 주신 내용이 알듯말듯.. 했는데, 아래의 링크의 내용을 보니 명확하게 눈에 들어오네요.. ^^
Concurrent applications tend to create a thread that
handles a whole series of tasks. Most of the time these concurrent
applications create threads because they need an isolated process for a
concurrent event. Parallel applications divide a process into small tasks
that are executed on seperate threads. Because the tasks are small, the
threads can be divided evenly over the processors, resulting in very
efficient use of a multi-core CPU.
Make fine grained interfaces that are client specific.
2. 패키지 설계원칙
The next six principles are about packages. In this context a package is a binary deliverable like a .jar file, or a dll as opposed to a namespace like a java package or a C++ namespace.
The first three package principles are about packagecohesion, they tell us what to put inside packages:
Consistency : all nodes see the same data at the same time Availability : node failures do not prevent survivors from continuing to operate Partition Tolerance : the system continues to operate despite arbitrary message loss
Partition tolerance refers to the ability for a system to continue to
operate in the presence of a network partitions. For example, if I have
a database running on 80 nodes across 2 racks and the interconnect
between the racks is lost, my database is now partitioned. If the
system is tolerant of it, then the database will still be able to
perform read and write operations while partitioned. If not, often
times the cluster is completely unusable or is read-only.
모, 대충 이해하기로 네트웍의 문제로 인해서 정말로 서비스하는 노드가 분리(partition)되어서 잘 동작(tolerance)을 해야 된다는 얘기인듯..
그리고, 분산 시스템은 위의 CAP Theorem의 3가지 특성을 만족시킬 수 없기 때문에, 한가지 특성은 포기를 해야 한다고 하는 Brewer's CAP Theorem도 있네요..
위 내용은 분산시스템에 대한 기본적인 이론이라서, 꼭 알아둘 필요가 있을거 같습니다.
추후 NOSQL 관련 시스템 공부를 위해서.. ^^
class RealPrinter {// the "delegate" void print(){ System.out.print("something"); } }
class Printer {// the "delegator"
RealPrinter p =new RealPrinter();// create the delegate void print(){
p.print();// delegation } }
publicclass Main { // to the outside world it looks like Printer actually prints. publicstaticvoid main(String[] args){
Printer printer =new Printer();
printer.print(); } }
1) In computers, a platform
is an underlying computer system on which application programs can run.
On personal computers, Windows 2000 and the Mac OS X are examples of two
different platforms. On enterprise servers or mainframes, IBM's S/390 is an
example of a platform.
A platform consists of an operating system, the computer
system's coordinating program, which in turn is built on the instruction
set for a processor or microprocessor, the hardware that
performs logic operations and manages data movement in the computer. The
operating system must be designed to work with the particular
processor's set of instructions. As an example, Microsoft's Windows 2000
is built to work with a series of microprocessors from the Intel
Corporation that share the same or similar sets of instructions. There
are usually other implied parts in any computer platform such as a
motherboard and a data bus, but these parts have increasingly become
modularized and standardized.
Historically,
most application programs have had to be written to run on a particular
platform. Each platform provided a different application program
interface for different system services. Thus, a PC program would have
to be written to run on the Windows 2000 platform and then again to run
on the Mac OS X platform. Although these
platform differences continue to exist and there will probably always be
proprietary differences between them, new open or standards-conforming
interfaces now allow many programs to run on different platforms or to
interoperate with different platforms through mediating or "broker"
programs.
2) A platform is
any base of technologies on which other technologies or processes are
built.
framework
In general, a framework is a real or conceptual structure
intended to serve as a support or guide for the building of something
that expands the structure into something useful.
In computer systems, a
framework is often a layered structure indicating what kind of programs
can or should be built and how they would interrelate. Some computer
system frameworks also include actual programs, specify programming
interfaces, or offer programming tools for using the frameworks. A
framework may be for a set of functions within a system and how they
interrelate; the layers of an operating system; the layers of an
application subsystem; how communication should be standardized at some
level of a network; and so forth. A framework is generally more
comprehensive than a protocol and more prescriptive than a
structure.